我正在使用Perl重命名工具编写bash脚本,它查找路径中有空格的任何文件(它做其他事情,但试图保持简单)。我使用-c开关转换为小写,并使用正则表达式将所有空格更改为虚线。命令完成时没有出现任何错误。
rename -f -X -c 's/[ ]+/-/g' /Volumes/data/Users-Links/adrz/test-site/with\ spaces/*
上面将文件转换为小写,但不用破折号替换空格。然后,我尝试在表达式前面使用-e开关。
rename -f -X -c -e 's/[ ]/-/g' /Volumes/data/Users-Links/adrz/test-site/with\ spaces/*
然后..。
'/Volumes/data/Users-Links/adrz/test-site/with空间/hello world.txt‘不能重命名为'/volumes/data/users-links/adrz/test-site/with-spaces/hello world.txt:没有这样的文件或目录
它似乎是对目录名的作用,这个目录名有空格,也有目录中的文件。需要注意的是,如果路径中没有空格,那么它可以正常工作。
我试过:
我已经找了好几个星期了但我想不出来。这是我脑子里的问题还是工具上的问题?
谢谢。
发布于 2019-10-19 16:21:02
除非您也试图更改目录,否则可以使用以下任何一种方法:
rename。sh -c 'cd /卷/./with\space;重命名-f -X -c -e "s/ +/-/g“*‘
/)的空格。重命名-f -X -c -e的{+(?.*/)}{-}sg‘/卷/.with\space/*
重命名-f -X -c -e‘use Basename qw( dirname basename );$_ = dirname($_)。"/“。basename($_) =~ s/ +/-/gr;‘/卷/./with\space/*
在这种情况下,这是过分的,但在不可能进行简单修改(如#2)的情况下,它可能是有用的。
https://stackoverflow.com/questions/58464558
复制相似问题