Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash Linux下的海量文件重命名_Bash - Fatal编程技术网

Bash Linux下的海量文件重命名

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

我正在尝试在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 $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