所以我有一个文件列表,其编号类似于以下示例:
/list/CAP_0045.dat
/list/CAP_0044.dat
/list/CAP_0046.dat
我想重命名编号最大的文件以添加前缀。我该怎么做呢?
答案1
您可以为此使用命令替换(阅读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")"