如何一次重命名多个文件
How to rename multiple files at once
我的文件系统中有很多文件、目录和子目录。
例如:
/path/to/file/test-poster.jpg
/anotherpath/my-poster.jpg
/tuxisthebest/ohyes/path/exm/bold-poster.jpg
我想将所有文件名从 *-poster.jpg
更改为 folder.jpg
我试过 sed
和 awk
但没有成功。
帮助不大?
你可以用 find
:
find -name "*poster.jpg" -exec sh -c 'mv "[=10=]" "${0%/*}/folder.jpg"' '{}' \;
说明
在这里,对于每个匹配的文件名,执行:
sh -c 'mv "[=11=]" "${0%/*}/folder.jpg"' '{}'
其中 '{}'
是作为参数传递给 command_string:
的文件名
mv "[=12=]" "${0%/*}/folder.jpg"
因此,最后,[=16=]
将具有文件名。
最后,${0%/*}/folder.jpg
扩展到旧文件名的路径并添加 /folder.jpg
。
例子
请注意,我将 mv
替换为 echo
$ find -name "*poster.jpg" -exec sh -c 'echo "[=13=]" "${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
试试这个脚本,它应该根据需要重命名所有文件。
for i in $(find . -name "*-poster.jpg") ; do folder=`echo $i | awk -F"-poster.jpg" {'print '}`; mv -iv $i $folder.folder.jpg; done
您可以替换 .到脚本中命令 find . -name "*-poster.jpg"
中放置这些文件的目录。让我知道它是否适合你。
你可以试试
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'
\;
我的文件系统中有很多文件、目录和子目录。
例如:
/path/to/file/test-poster.jpg
/anotherpath/my-poster.jpg
/tuxisthebest/ohyes/path/exm/bold-poster.jpg
我想将所有文件名从 *-poster.jpg
更改为 folder.jpg
我试过 sed
和 awk
但没有成功。
帮助不大?
你可以用 find
:
find -name "*poster.jpg" -exec sh -c 'mv "[=10=]" "${0%/*}/folder.jpg"' '{}' \;
说明
在这里,对于每个匹配的文件名,执行:
sh -c 'mv "[=11=]" "${0%/*}/folder.jpg"' '{}'
其中 '{}'
是作为参数传递给 command_string:
mv "[=12=]" "${0%/*}/folder.jpg"
因此,最后,[=16=]
将具有文件名。
最后,${0%/*}/folder.jpg
扩展到旧文件名的路径并添加 /folder.jpg
。
例子
请注意,我将 mv
替换为 echo
$ find -name "*poster.jpg" -exec sh -c 'echo "[=13=]" "${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
试试这个脚本,它应该根据需要重命名所有文件。
for i in $(find . -name "*-poster.jpg") ; do folder=`echo $i | awk -F"-poster.jpg" {'print '}`; mv -iv $i $folder.folder.jpg; done
您可以替换 .到脚本中命令 find . -name "*-poster.jpg"
中放置这些文件的目录。让我知道它是否适合你。
你可以试试
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'
\;