特定フォルダのファイル数を確認する

特定フォルダのファイル数を確認する

複数のファイルを含む100個のフォルダ(「Folder_1」、「Folder_2」、「Folder_3」...)があります。各フォルダのループでコマンドを実行したい(つまり、条件(つまり、フォルダ内のファイル数は20133と同じではありません。)これは私のコードです。

for f in *Folder*/; do cd "$f"; if ["$(find . -type f | wc -l)" -ne 20133]; then echo "$f" && cd ..; fi; done

ただし、次のエラー メッセージが表示されます。

-bash: cd: Folder_1/: No such file or directory
-bash: [20133: command not found
...

ベストアンサー1

問題は常に現在のディレクトリ(cd "$f")を入力しますが、()を押すと1つのディレクトリのみが返されることですthen echo "$f" && cd ..

これがテスト環境を作成し、実際の例を作成するために行ったことです。

johan@iMac:~$ mkdir -p example/Folder_{1..20}
johan@iMac:~$ touch example/Folder_{1..20}/file_{1..10}
johan@iMac:~$ touch example/Folder_{18..20}/file_{11..15}
johan@iMac:~$ cd example
johan@iMac:~/example$ for f in Folder_*; do test "$(find "$f" -type f | wc -l)" -eq 15 && echo "$f"; done
Folder_18
Folder_19
Folder_20
johan@iMac:~/example$ cd ..
johan@iMac:~$ rm -rf example/

test読みやすくするために、[...]構文の代わりに組み込み構文を使用しています。興味深いのは、[そのキャラクターがただの番組に過ぎず、番組と同じだという点だtest。これがパラメータの周りにスペースが必要な理由です:)

ここで確認してください(私のiMacで)。

johan@iMac:~$ md5 /bin/test
MD5 (/bin/test) = 2c4b51263409bd39f1ea0fa4f925130a
johan@iMac:~$ md5 /bin/[
MD5 (/bin/[) = 2c4b51263409bd39f1ea0fa4f925130a

おすすめ記事