Settings.json
このコンピュータには多くのファイルがあります。
私はこれらすべての人のリストを得るために次の方法を使います。
find / -name "Settings.json" 2>&-
しかし、そのいくつかはにありますApi
。たとえば、次のようになります。
/ClubApi/Settings.json
/CrmApi/Settings.json
属していない限り、すべて削除したいと思います。Api
...そうすることはできません。
私は試した:
find / -name "Settings.json" 2>&- | xargs grep -v Api
ただし、パスフィルタリングには機能しませんApi
。
どうすればいいですか?
ベストアンサー1
まず、このような習慣を持たないでください。閉鎖2>&-
エラーを無視するには、標準エラーストリームを使用します。にリダイレクトする方が/dev/null
安全です2>/dev/null
。一部のコマンドは閉じたストリームに書き込みを試み、失敗すると終了します。
たとえば、参照してください。
{ echo 'error' >&2 && echo 'output'; } 2>&-
(何も出力しない)
{ echo 'error' >&2 && echo 'output'; } 2>/dev/null
(出力output
)。
-path
影響を与えないファイルを避けるためにテストを使用してください。
LC_ALL=C find / -type f ! -path '*Api/Settings.json' -name 'Settings.json' -print
または、*Api
近くにいない場合は、次のディレクトリを完全に避けてください。
LC_ALL=C find / -name '*Api' -prune -o -type f -name 'Settings.json' -print
述語は-prune
検索ツリーのブランチを「切り取り」(切り取り、削除)するため、上記のコマンドは名前が一致find
するディレクトリには入りません*Api
。
-print
-exec rm {} +
実際にファイルを削除するには、上記のコマンドを変更してください。