为最大数字文件名添加前缀

为最大数字文件名添加前缀

所以我有一个文件列表,其编号类似于以下示例:

/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 -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")"

相关内容