我需要找到.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
。这告诉find
和xargs
使用空字符(不能出现在文件名中)作为文件名之间的分隔符,并且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