奇妙なファイル名を使う

奇妙なファイル名を使う

findが返すファイル名に関係なく、次のスクリプトが常に機能するようにするにはどうすればよいですか?

#!/bin/sh

cmds_should_always_work() { 
    echo "\n\n*********************************" $1
    stat --printf='%n' -- "$1" || echo STATFAILED
    echo "\n----------------\n"
    lsattr -d -- "$1" || echo LSATTRFAILED
    echo "\n----------------\n"
}; 
for item in $(find "$1" -maxdepth 1 -mindepth 1); do cmds_should_always_work "${item}"; done

たとえば、ディレクトリで改行文字を含むファイルが見つかった場合、このスクリプトは中断されます。

また、ルックアップディレクトリの名前が$ schemaの場合、このスクリプトは親ディレクトリを返します。スクリプトにsomepath / \ $ schemaパスを提供してエスケープする必要があるのと比較して、スクリプトはこれをどのように防止しますか?

関連情報