Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.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/7/arduino/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脚本-有选择地使用空格处理文件名_Bash_Filenames_Spaces - Fatal编程技术网

bash脚本-有选择地使用空格处理文件名

bash脚本-有选择地使用空格处理文件名,bash,filenames,spaces,Bash,Filenames,Spaces,我有一个目录,文件名为“abc.jpg”、“def0.jpg”、“ghi.jpg” 我需要一个脚本,让所有以“0.jpg”结尾的文件变成“_0.jpg” 因此,在上面的示例中,第二个文件应该是“def_0.jpg”重命名工具可能是您所需要的。重命名工具可能是您所需要的。我想您的问题应该是,您希望以“0.jpg”结尾的文件变成“\u 0.jpg”(注意第一个引号中的空格)。你的例子说明了这一点 for i in *\ 0.jpg ; do mv -- "$i" "${i/ 0.jpg/_0

我有一个目录,文件名为“abc.jpg”、“def0.jpg”、“ghi.jpg”

我需要一个脚本,让所有以“0.jpg”结尾的文件变成“_0.jpg”


因此,在上面的示例中,第二个文件应该是“def_0.jpg”

重命名工具可能是您所需要的。

重命名工具可能是您所需要的。

我想您的问题应该是,您希望以“0.jpg”结尾的文件变成“\u 0.jpg”(注意第一个引号中的空格)。你的例子说明了这一点

for i in *\ 0.jpg ; do
    mv -- "$i" "${i/ 0.jpg/_0.jpg}"
done
也就是说,对于与模式“*0.jpg”匹配的每个文件,将其重命名,将“0.jpg”替换为“_0.jpg”


<>编辑:为了增加安全性,考虑使用<代码> -N/COD>(无CulbBER)或<代码> -I/COD>(交互)作为<代码> MV(1)< /C> >的选项。

< P>我认为您的问题应该读到,您希望文件以“0。JPG”结尾,成为“0 .jpg”(请注意第一引号中的空格)。你的例子说明了这一点

for i in *\ 0.jpg ; do
    mv -- "$i" "${i/ 0.jpg/_0.jpg}"
done
也就是说,对于与模式“*0.jpg”匹配的每个文件,将其重命名,将“0.jpg”替换为“_0.jpg”


< >编辑:为了增加安全性,考虑使用<代码> -N/COD>(无CulbBER)或<代码> -I/COD>(交互)作为<代码> MV(1)< /C> >的选项。

这是MySQL的一部分,因此它可能无法安装。此外,它对内容有效,而不是文件名。这是MySQL的一部分,因此可能无法安装。此外,它对内容有效,而不是文件名。这至少值得三次否决票。不要在脚本中使用
ls
,不要使用
grep
匹配文件名,如果有更简单的内置解决方案,不要使用外部工具。更糟糕的是:这实际上不会重命名任何内容,它只会打印一个新名称列表。它没有将“0”替换为“\u 0”,而是添加了“\u 0”。它对所有的.jpg文件都这样做,而不仅仅是那些以“0.jpg”结尾的文件。如果任何一个文件名中有额外的句点字符,它就会变得更加愚蠢。这至少应该得到三次否决票。不要在脚本中使用
ls
,不要使用
grep
匹配文件名,如果有更简单的内置解决方案,不要使用外部工具。更糟糕的是:这实际上不会重命名任何内容,它只会打印一个新名称列表。它没有将“0”替换为“\u 0”,而是添加了“\u 0”。它对所有的.jpg文件都这样做,而不仅仅是那些以“0.jpg”结尾的文件。如果任何一个文件名中有额外的句点字符,它会变得更加愚蠢。好的解决方案,+1。您可能需要编写
mv--“$i”
来保护以破折号开头的文件名。这一点很好。因为我们使用的是bash,所以我们可能有gnumv。您好,请解释一下您在这里使用的是哪种技术?我不明白。“${i/0.jpg/_0.jpg}”很好的解决方案,+1。您可能需要编写
mv--“$i”
来保护以破折号开头的文件名。这一点很好。因为我们使用的是bash,所以我们可能有gnumv。您好,请解释一下您在这里使用的是哪种技术?我不明白。“${i/0.jpg/_0.jpg}”