Bash Linux下的海量文件重命名
我正在尝试在Kali Linux中重命名很多文件,将近16000个。它们被排列在近600个文件夹中,其中的文件被标记为0,1,2。。。(无文件extn。)在每个新文件夹中再次从0开始。我正在尝试将文件转换为.jpg格式。以下代码仅在我在终端中打开文件夹目录时有效-Bash Linux下的海量文件重命名,bash,Bash,我正在尝试在Kali Linux中重命名很多文件,将近16000个。它们被排列在近600个文件夹中,其中的文件被标记为0,1,2。。。(无文件extn。)在每个新文件夹中再次从0开始。我正在尝试将文件转换为.jpg格式。以下代码仅在我在终端中打开文件夹目录时有效- find . -name '[0-9][0-9][0-9]' -exec sh -c 'mv $0 $0.jpg' {} \; find . -name '[0-9][0-9]' -exec sh -c 'mv $0
find . -name '[0-9][0-9][0-9]' -exec sh -c 'mv $0 $0.jpg' {} \;
find . -name '[0-9][0-9]' -exec sh -c 'mv $0 $0.jpg' {} \;
find . -name '[0-9]' -exec sh -c 'mv $0 $0.jpg' {} \;
但对目录中的每个文件夹执行此操作将是相当繁琐的。对.sh可执行脚本有什么建议吗
编辑:必须更改扩展名,名称可以保持原样…您可以使用单个查找命令:
find -type f -regextype posix-extended -regex '.*/[0-9]{1,3}' -exec mv -v {} {}.jpg \;
如果您不介意安装其他工具,请使用:
^\d{1,3}$
是我们正在寻找的匹配项,替换部分中的&
是指文件名中匹配的部分-fo
:仅文件模式-dp
:方向深度(-1表示无限制)编写一个脚本,循环找到的每个文件夹,然后重命名该文件夹中的所有对象,移动到下一个文件夹,并执行相同的操作。Linux还具有内置的重命名功能,您可以从GUI访问这些功能。选择所有文件夹并点击重命名。我确实了解了我必须要做的事情,但不幸的是,我刚开始使用Linux,不知道如何继续…“将文件转换为.jpg格式”重命名文件不会更改其格式。要在命令行上将文件从其他格式转换为jpg,ImageMagick是一个很好的工具。@AnaklusmosymyFavoriteWidger:您的Windows认为这些文件现在是JPEG,但它们仍然是与以前相同的文件,名称不同。如果应用程序打开它们并希望使用JPEG格式,则会a)失败,或b)忽略名称并按实际情况读取它们。无论哪种方式,您的文件现在都不是神奇的JPEG格式,只需重命名即可。这非常有效。。。这些文件本身似乎最初是JPEG格式的,Linux在读取它们时没有遇到任何问题,正如@devsolar所建议的那样。顺便说一句,谢谢你的帮助。
rnm -rs '/^\d{1,3}$/&.jpg/' -fo -dp -1 /path