ls grepとrmを使用してディレクトリ内のファイルを削除する

ls grepとrmを使用してディレクトリ内のファイルを削除する

私のプロジェクトルートには、この行を含むbashファイルがあります。

$ ls | grep -P '^some_pattern_matching_regex_goeshere.txt$' | xargs rm -f

上記の行は.txtプロジェクトルートからすべてのファイルを削除しますが、すべての.txtファイルを次のような別のフォルダにプッシュするとプロセスログ/同じコマンドを試しましたが、動作しませlsん。greprm

削除に失敗したファイルは次のとおりです。プロセスログ目次。

 $ ls process_logs/ | grep -P '^some_pattern_matching_regex_goeshere.txt$' | xargs rm -f

気づく:ディレクトリからファイルを削除するなどの単純な正規表現パターンを使用してコマンドを試しましたが、 ls process_logs/ | grep -P '^*.txt$' | xargs rm -f機能しません。

ベストアンサー1

find選択肢を試してみてください。再帰を望まない場合は、find深さオプションを使用できます。

find /process_logs -maxdepth 1 -mindepth 1 -type f -name 'some_shell_glob_pattern_here' -delete

ls解析された出力は、人間が読める印刷されたファイル名のバージョンが実際のファイル名と一致しない可能性があるため、必ずしもls正確ではないため推奨されません。ls詳細については、次を参照してください。lsを解析するウィキの記事。

おすすめ記事