我的文件系统中有很多文件,目录和子目录 例如:
/path/to/file/test-poster.jpg
/anotherpath/my-poster.jpg
/tuxisthebest/ohyes/path/exm/bold-poster.jpg
我想将所有文件名从*-poster.jpg
切换为folder.jpg
我尝试使用sed
和awk
但没有成功
一点帮助?
答案 0 :(得分:5)
您可以使用find
:
find -name "*poster.jpg" -exec sh -c 'mv "$0" "${0%/*}/folder.jpg"' '{}' \;
此处,对于匹配的每个文件名,执行:
sh -c 'mv "$0" "${0%/*}/folder.jpg"' '{}'
其中'{}'
是作为参数传递给 command_string 的文件名:
mv "$0" "${0%/*}/folder.jpg"
因此,最后,$0
将具有文件名。
最后,${0%/*}/folder.jpg
展开到旧文件名的路径并添加/folder.jpg
。
注意我正在用mv
替换echo
$ find -name "*poster.jpg" -exec sh -c 'echo "$0" "${0%/*}/folder.jpg"' '{}' \;
./anotherpath/my-poster.jpg ./anotherpath/folder.jpg
./path/to/file/test-poster.jpg ./path/to/file/folder.jpg
./tuxisthebest/ohyes/path/exm/bold-poster.jpg ./tuxisthebest/ohyes/path/exm/folder.jpg
答案 1 :(得分:1)
试试这个脚本,它应该根据需要重命名所有文件。
for i in $(find . -name "*-poster.jpg") ; do folder=`echo $i | awk -F"-poster.jpg" {'print $1'}`; mv -iv $i $folder.folder.jpg; done
你可以替换。到脚本中命令find . -name "*-poster.jpg"
中放置这些文件的目录。让我知道它是否适合您。
答案 2 :(得分:0)
你可以试试
find -name '*poster*' -type f -exec sh -c 'mv "{}" "$(dirname "{}")"/folder.jpg' \;
查找包含海报== find -name '*poster*' -type f
复制文件的目录路径并将其存储在临时变量中,然后将“folder.jpg”粘贴到目录路径== -exec sh -c 'mv "{}" "$(dirname "{}")"/folder.jpg'
\;