私のプロジェクトルートには、この行を含むbashファイルがあります。
$ ls | grep -P '^some_pattern_matching_regex_goeshere.txt$' | xargs rm -f
上記の行は.txt
プロジェクトルートからすべてのファイルを削除しますが、すべての.txtファイルを次のような別のフォルダにプッシュするとプロセスログ/同じコマンドを試しましたが、動作しませls
ん。grep
rm
削除に失敗したファイルは次のとおりです。プロセスログ目次。
$ 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を解析するウィキの記事。