Mad*_*ord 4 linux bash command-line-interface
我有一个包含超过5000张图像的文件夹,全部都带有JPG扩展名.
我想要做的是递归地将"thumb_"前缀添加到所有图像.
我发现了一个类似的问题:重命名文件和目录(添加前缀) 但我只想将前缀添加到具有JPG扩展名的文件中.
可能的解决方案之一:
find . -name '*.jpg' -printf "'%p' '%h/thumb_%f'\n" | xargs -n2 echo mv
Run Code Online (Sandbox Code Playgroud)
Principe:找到所有需要的文件,并为标准mv命令准备参数.
笔记:
mv包围的参数'.'撇号本身的文件名,就像许多mp3文件一样.如果您需要移动更多奇怪的文件名,请检查以下内容.echo假装mv.任何文件名重命名.在shell中你需要一个分隔符.问题是,文件名(存储在shell变量中)通常可以包含分隔符本身,因此:
mv $file $newfile #will fail, if the filename contains space, TAB or newline
mv "$file" "$newfile" #will fail, if the any of the filenames contains "
Run Code Online (Sandbox Code Playgroud)
正确的解决方案是:
使用它的内部和格式化指令= 可以在bash中准备正确的转义.但这个解决方案漫长而无聊.printf%qprint quoted
恕我直言,最简单的方法是使用perl和零填充print0,就像下一个.
find . -name \*.jpg -print0 | perl -MFile::Basename -0nle 'rename $_, dirname($_)."/thumb_".basename($_)'
Run Code Online (Sandbox Code Playgroud)
以上使用perl的功能来修改文件名,最后重命名文件.
| 归档时间: |
|
| 查看次数: |
4821 次 |
| 最近记录: |