Mv
為最大數字文件名添加前綴
所以我有一個文件列表,其編號類似於下面的範例:
/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 -print0
and{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")"