我需要.nfo在我的媒体目录中找到所有文件,以便我可以sed用来更改某些部分。问题是我的文件夹名称中有空格。
find /media/media1/HDTV -name \*.nfo -type f
media/media1/HDTV/Band of Brothers/Season 1/
…
Run Code Online (Sandbox Code Playgroud)
sed更改我想要的字符串的命令不会找到输出文件。
find不关心文件名中的特殊字符,但解析 may 输出的程序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/'
Run Code Online (Sandbox Code Playgroud)
在许多文件上调用命令的另一种方法是使用findonly。
find /media/media1/HDTV -name '*.nfo' -type f -exec sed -i 's/pattern/replacement/' {} +
Run Code Online (Sandbox Code Playgroud)