我使用“-print0”选项来处理带空格的文件名,但出现错误
I used the'-print0' option to handle filenames with spaces, but I get an error
#!/bin/bash
find /home/data -name '*QQ*' -print0 -exec bash -c ' mv ${0/\-QQ/-TT}' {} \;
我使用“-print0”选项处理带空格的文件名,但出现错误
/home/data/gone to sea.1080p-QQ.mp4mv: target 'sea.1080p-TT.mp4' is not a directory
哪一部分是错误的?
谢谢
您不需要 -print0
,因为您没有将输出传输到另一个程序。
你只需要在bash命令中正确引用即可。
find /home/data -name '*-QQ*' -exec bash -c 'mv "" "${1/\-QQ/-TT}"' {} {} \;
只要文件名不包含双引号或 $
个字符,这就应该有效。
您也可以使用 rename
命令避免 bash -c
:
find /home/data -name '*-QQ*' -exec rename 's/-QQ/-TT/' {} +
#!/bin/bash
find /home/data -name '*QQ*' -print0 -exec bash -c ' mv ${0/\-QQ/-TT}' {} \;
我使用“-print0”选项处理带空格的文件名,但出现错误
/home/data/gone to sea.1080p-QQ.mp4mv: target 'sea.1080p-TT.mp4' is not a directory
哪一部分是错误的?
谢谢
您不需要 -print0
,因为您没有将输出传输到另一个程序。
你只需要在bash命令中正确引用即可。
find /home/data -name '*-QQ*' -exec bash -c 'mv "" "${1/\-QQ/-TT}"' {} {} \;
只要文件名不包含双引号或 $
个字符,这就应该有效。
您也可以使用 rename
命令避免 bash -c
:
find /home/data -name '*-QQ*' -exec rename 's/-QQ/-TT/' {} +