Sort

對字母數字文件名使用排序

  • April 16, 2019

我正在對find查找目前目錄中所有文件的命令的結果進行排序:

find . -maxdepth 1 -type f -iname "*.flac" | sort

我期待的是這樣的列表:

./Track 1.flac
./Track 2.flac
./Track 3.flac
...
./Track 9.flac
./Track 10.flac
./Track 11.flac

我得到的是這樣的列表:

./Track 10.flac
./Track 11.flac
./Track 1.flac
./Track 2.flac
./Track 3.flac
...
./Track 9.flac

是否有一個選項可以sort將它們按字母數字升序排列,以便正確評估數字?

嘗試將-n-k2命令行選項傳遞給sort. IE,

find . -maxdepth 1 -type f -iname "*.flac" | sort -n -k2

當我將未排序的文件名放入文件“data.txt”並執行以下命令時:

sort -k2 -n data.txt

我得到這個作為輸出:

./Track 1.flac
./Track 2.flac
./Track 3.flac
./Track 9.flac
./Track 10.flac
./Track 11.flac

選項說明:

-n (numeric sort) compare according to string numerical value
-k2 means sort on the 2nd field (and to the end of the line), 
   you could just restrict it to the second field with -k2,2

你沒有問這個,我上面也沒用過,但總有一天它可能會派上用場。

-r reverse sort order 

手冊sort

請參閱我在 SO 上關於根據不同欄位進行排序的相關文章 按第三列排序,使第一列和第二列保持不變(在 linux 中),其中解釋了有關排序命令的更多資訊。

引用自:https://unix.stackexchange.com/questions/41149