ターミナルでディレクトリ内の先頭ファイルを開く


発端

大量のファイルがあるディレクトリから, なんでもいいから
1個ファイルを覗きたいというときがあります.
例えば機械学習の大量のアノテーションファイルがあるディレクトリで,
なんでもいいから1個覗いてみて形式を見たいとか.

lsして大量に表示されるの嫌ですよね.

ディレクトリの中に17126ものファイルが...

そんなときのワンライナー

$ vim `ls | head -n 1`

コマンドの説明

まず, vimが嫌という人は他のエディタでどうぞ. lessとかでもいいかもしれません.

`コマンド`

これで, ``の中身をコマンドとして処理し, 結果を出力させます. これをvimに渡します.

ls | head -n 1

lsした結果を, headにパイプで渡し, -nオプションで1行だけ抽出します.

もし実行権限がついていて, ファイル名に*がついちゃってるときは

$ vim `ls | head -n 1 | sed s/\*//`

のようにsedで取り除きましょう. chmodしたほうが早そうですが.

さらに, ディレクトリ内にディレクトリが含まれていて, lsしたら最初にディレクトリが表示されてしまうよってときは

$ vim `ls -F | grep -v / | head -n 1`

のようにします.
- ls -F : ディレクトリ名に / がつくようになる
- grep -v : ヒットしたもの以外を検索結果に出す

結論

こうなると, このコマンドを打ったほうが早いのか直接ファイル名を打ったほうが早いのかわかりませんね.
今回はエディタでしたが, 他のアプリでも使えます.