Mv

為最大數字文件名添加前綴

  • April 18, 2016

所以我有一個文件列表,其編號類似於下面的範例:

/list/CAP_0045.dat
/list/CAP_0044.dat
/list/CAP_0046.dat

我想重命名具有最大數字的文件以添加前綴。我該怎麼做呢?

您可以為此使用命令替換(閱讀man sh並查找它)。

如果ls /list | tail -n 1列印正確的文件,您可以這樣做:

file=$(ls /list | tail -n 1)
mv "/list/$file" "/list/PREFIX$file"

編輯:正如@Wildcard 所指出的,如果文件名包含換行符,這可能會失敗。

即使在文件名中使用換行符也應該使用的解決方案使用find -print0and {sort,head,tail} -z(似乎並非所有版本都支持-z/--zero-terminated選項,GNU 支持):

file=$(find /list -print0 | sort -z | tail -n 1 -z)
mv "$file" "$(dirname "$file")/PREFIX$(basename "$file")"

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