当目录名称中有空格时如何使用 find?

当目录名称中有空格时如何使用 find?

我需要找到.nfo媒体目录中的所有文件,以便sed更改某些部分。问题是我的文件夹名称中有空格。

find  /media/media1/HDTV -name  \*.nfo -type f 
media/media1/HDTV/Band of Brothers/Season 1/

无法通过sed命令找到输出文件来更改我想要的字符串。

答案1

find不关心文件名中的特殊字符,但解析输出的程序find可能会关心。如果您使用xargs,请使用-print0选项find,以及-0选项xargs。这告诉findxargs使用空字符(不能出现在文件名中)作为文件名之间的分隔符,并且xargs不进行任何其他会破坏包含空格的文件名的解析。

find /media/media1/HDTV -name '*.nfo' -type f -print0 |
xargs -0 sed -i 's/pattern/replacement/'

对多个文件调用命令的另一种方法是find仅使用。

find /media/media1/HDTV -name '*.nfo' -type f -exec sed -i 's/pattern/replacement/' {} +

答案2

正常输入,但在单词后、空格前添加 \。

IEcd ~/home/New\ Volume/movies/new\ stuff

相关内容