web-dev-qa-db-ja.com

ディレクトリ名にスペースが含まれているときにfindを使用する方法は?

メディアディレクトリですべての.nfoファイルを見つける必要があるので、sedを使用して一部を変更できます。問題は、フォルダに名前にスペースが含まれていることです。

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

出力ファイルは、必要な文字列を変更するsedコマンドでは見つかりません。

4
papampi

findはファイル名の特殊文字を気にしませんが、findの出力を解析しているプログラムは気にするかもしれません。 xargsを使用している場合は、find-print0オプションを使用し、xargs-0オプションを使用します。これは、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/' {} +
6
Gilles