Finderと同じ順序で端末からファイルリストを取得する

Finderと同じ順序で端末からファイルリストを取得する

約1,000個の画像ファイルを含むフォルダがあります。そのリストを作成する必要があります。ターミナルに行ってフォルダにCDを入れたら入力するだけでいいという内容をどこかで読みました。

ls>リスト.csv

リストを生成します。問題は、このリストがFinderに表示されるファイルと順序が異なることです。たとえば、Finderでは、最初の画像は16_left.jpgです。ただし、生成されたlist.csvファイルの最初の画像は10017_left.jpgで、16_left.jpgは常に15975_right.jpgと16007_right.jpgの間にあります。

Finder では、数値 16 をファイル内の最小数字と見なして先頭に配置しますが、list.csv ファイルは整数自体ではなく左から右に各数値ペアで表示されることがわかります。リストがソートされます。

Finderと同じ順序でlist.csvを作成するにはどうすればよいですか?

ベストアンサー1

lsShell globs は、デフォルトで名前でファイルのリストをアルファベット順にソートします。

GNU実装にはオプションがlsあります-vバージョンsortはここで役に立ちますが、lsmacosにはそれに対応するものはありません(-v他の目的で使用されます(逐語的に))。

GNU実装にはオプションもsortあります-Vバージョンタイプ。 macosはsortそれをコピーしました(BSDはsortGNUだったsortので、それを書き換えた人はAPIを保持しました)。

したがって、現在の作業ディレクトリ内のすべてのファイル名に改行文字がない場合です。

ls | sort -V

数字の順番を教えてくれます。

zshシェルでは、デフォルトで数字でソートするためにglob拡張にこのnumericglobsortオプション(有効化を使用)を使用できます。または、glob修飾子を使用してglobごとにその順序をset -o numericglobsort選択できます。n

print -rC1 -- *.jpg(Nn)

Nここでullglob修飾子が使用されているため、一致するものがなくても文句はありません。)名前がolumnで終わる非隠しファイルprint rの場合は、数値順に並べ替えられます。1 C.jpg

ただし、リストをcsv形式で取得するには、次のものが必要です。

(){ print -rC1 -- \"${^argv//\"/\"\"}\"; } *.jpg(Nn)

つまり、ファイル名を引用符で囲み、"ファイル名のsを""

おすすめ記事