これで、サイズが25 MBを超え、日付が過去7日間のファイルを探したいと思います。 orをどのように使用できますか?今私はこう書いています。
find /var/lib/docker/ -type f ( -size +25M -or -mtime +7 ) -name *.log
しかし、うまくいきません。
答え1
実際、OR(テキストはANDを意味)を意味すると仮定すると、*.log
パターンを引用する必要があることを除いて、コマンドは正しく表示されます。また、シェル(
が)
サブシェルであるとは思わないように、引用またはエスケープする必要があります。
find /var/lib/docker/ -type f \( -size +25M -o -mtime +7 \) -name '*.log'
'(' ... ')'
二重引用符を使用するのと同じように機能します。
引用しないと、*.log
シェルは実行前に現在のディレクトリのすべてのファイル名に対してパターンを拡張しようとしますfind
。
上記のコマンドでは、-o
非標準コマンドの代わりにを使用することを選択しました-or
。
効率性に興味がある場合は、テストを次のように並べ替えることができます。
find /var/lib/docker/ -name '*.log' -type f \( -size +25M -o -mtime +7 \)
つまり、名前が一致しない限り、各ファイルのサイズとタイムスタンプを取得するために呼び出しをfind
使用する必要はありません。stat
*.log