いくつかのファイルで処理を行う一般的な方法は次のとおりです。そのために私を襲わないでください。
for f in $(ls); do …
ここで、スペースやその他の奇妙な文字を含むファイルに対して安全にするために、素朴な方法は次のようにすることです:
find . -type f -print0 | while IFS= read -r -d '' file; …
ここでは、-d ''はASCII NULをのように設定するための略語-d $'\0'です。
しかし、それはなぜですか?なぜ''と$'\0'同じ?これは、空の文字列が常にnullで終了しているBashのCルートによるものですか?
for i in $(ls)がひどく愚かであることを知っています—私はここで悪い例としてそれを使用したことをほとんど恥ずかしく思っています。
find … -execファイルをループする代わりにを使用します。これは、代わりにそのようなforループを使用するほとんどの場合に機能します。ここでfindは、あなたのためにすべてを世話します。