「find」コマンドを実行したときに表示されるエラーメッセージについて問い合わせたいと思います。次の段落では、私が達成したいものが何であるかを説明します。
親フォルダがあります。このフォルダには多くのサブフォルダがあります。各サブフォルダには複数のサブフォルダがあります。特定の数のファイルを含むサブフォルダを一覧表示したいと思います。次のように for ループを実行します。
#!/bin/bash
in=PATH_TO_THE_PARENT_FOLDER
for i in ${in}/*; do
find ${i} -maxdepth 1 -type d -print0 | xargs -0 -I {} sh -c 'echo -e $(find {} | wc -l) {}' | sort -n | grep -w 69 | awk '{print $2}' #69 represent the total number of files within a folder
done
このコードは次のエラーメッセージを出力しますsh: MPR_Range: No such file or directory
。その意味の説明を検索してみましたが、sh: MPR_Range
答えが見つかりませんでした。
答え1
というファイルがあるとしますfoo&bar
。xargs
それでは、コマンドを実行しましょう。
sh -c 'echo -e $(find foo&bar | wc -l) foo&bar'
バックグラウンドで実行されecho
、 と同様です。find
bar
foo;bar
$(bar)
{}
inargments を使用しないで、sh -c
ファイル名を別の引数として指定してください。
... |xargs sh -c 'echo -e $(find "$1" | wc -l) "$1"' sh {} | ...
find -exec
また、代わりに次のものを使用できますxargs
。
find -type d -exec sh -c 'echo ...' \;
とにかく、特定の数の行を見つけるためにsort
これが必要かどうかはわかりません。grep