gpt4 book ai didi

bash - 从文件中而不是从目录中删除空格会引发错误

转载 作者:行者123 更新时间:2023-12-04 18:59:02 24 4
gpt4 key购买 nike

我正在尝试使用包含空格的父文件夹递归重命名一些文件,我在 ubuntu 终端中尝试了以下命令:

find . -type f -name '* *' -print0 | xargs -0 rename 's/ //'
它给出了以下关于文件夹名称的错误:
Can't rename ./FOLDER WITH SPACES/FOLDER1.1/SUBFOLDER1.1/FILE.01 A.jpg
./FOLDERWITH SPACES/FOLDER1.1/SUBFOLDER1.1/FILE.01 A.jpg: No such file
or directory
如果我没记错文件夹中有空格这一事实不应该影响进程,因为它使用标志 -f。 .

最佳答案

传递给 xargs 的内容是文件的完整路径,而不仅仅是文件名。所以你的s/ //替换命令还从目录部分中删除空格。并且由于新目录(没有空格)不存在,您会看到您看到的错误。在您的示例中,重命名为:

./FOLDER WITH SPACES/FOLDER1.1/SUBFOLDER1.1/FILE.01 A.jpg ->
./FOLDERWITH SPACES/FOLDER1.1/SUBFOLDER1.1/FILE.01 A.jpg
如果目录 ./FOLDERWITH SPACES/FOLDER1.1/SUBFOLDER1.1,这是不可能的。不存在。
试试 -d rename 的选项:
find . -type f -name '* *' -print0 | xargs -0 rename -d 's/ //'
( -d 选项仅重命名路径的文件名部分。)
请注意,您不需要 xargs .您可以使用 -execdir find 的操作:
find . -type f -name '* *' -execdir rename 's/ //' {} +
而作为 -execdir命令在包含匹配文件的子目录中执行,您不需要 -d rename 的选项不再。和 -print0 find 的操作也不需要。
最后说明:如果要替换 全部 文件名中的空格,不仅仅是第一个,不要忘记添加 g标志: rename 's/ //g' .

关于bash - 从文件中而不是从目录中删除空格会引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69736976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com