.indexで終わるファイルのみを検索+削除

.indexで終わるファイルのみを検索+削除

Red Hat Enterprise Linux には Kafka プロダクションマシンがあります。

  1. /var/kafka/kafka-logsそのエンディングの下のすべてのファイルをどのように削除しますか.index

  2. .index で終わるすべてのファイルを他のフォルダにどのように移動できますか/var/tmp/INDEX_BACKUP

例は次のとおりです/var/kafka/kafka-logs

./hd3gd.ewhd.pri.processed-98/00000000000000000011.index
./hd3gd.ewhd.pri.processed-99/00000000000000000000.index
./hd3gd.ewhd.suspected_relations-0/00000000000000000000.index
./hd3gd.ewhd.suspected_relations-1/00000000000000000000.index
./hd3gd.ewhd.suspected_relations-2/00000000000000000000.index
./hd3gd.ewhd.suspected_relations-3/00000000000000000000.index
./hd3gd.ewhd.suspected_relations-4/00000000000000000000.index
./hd3gd.ewhd.suspected_relations-5/00000000000000000000.index
./frfwjnwe.fwefew.heartbeat-0/00000000000000000000.index
./frfwjnwe.fwefew.heartbeat-1/00000000000000000000.index
./frfwjnwe.fwefew.heartbeat-1/00000000000000017239.index
./frfwjnwe.fwefew.heartbeat-2/00000000000000000000.index
./frfwjnwe.fwefew.heartbeat-2/00000000000000017238.index

答え1

  • GNUまたは互換バージョンを使用して、次に.index終わるすべてのファイルを削除してください。/var/kafka/kafka-logsfind

    find /var/kafka/kafka-logs -name \*.index -delete
    

    POSIX的に:

    find /var/kafka/kafka-logs -name \*.index -exec rm -f {} +
    
  • GNUを使用して別のフォルダに移動しますmv

    find /var/kafka/kafka-logs -name \*.index -exec mv -t /var/tmp/INDEX_BACKUP {} +
    

    POSIX的に:

    find /var/kafka/kafka-logs -name \*.index -exec sh -c '
      exec mv "$@" /var/tmp/INDEX_BACKUP/' sh {} +
    

答え2

広告1:

find /var/kafka/kafka-logs -type f -name "*.index" -exec rm -v {} \;

2番目の質問に対する答えはここにあります。findコマンドの後にmvコマンドを統合する方法は?

答え3

rmコマンドのより大きなパラメータのため、これらのコマンドはより速く実行されます(find / -execと比較して)。 GNUの検索は不要です。

Q1.

find /var/kafka/kafka-logs -type f -name "*.index" | xargs rm

Q2.

find /var/kafka/kafka-logs -name "*.index" | xargs -I {} mv {} /var/tmp/INDEX_BACKUP

また、GNU findはACLや拡張属性をサポートしていないため、SolarisではGNU findを使用したくありません。

答え4

bash存在しないものを使用しているとします。数千次のファイルのうち:

  1. rm /var/kafka/kafka-logs/**.index

  2. mv /var/kafka/kafka-logs/**.index /var/tmp/INDEX_BACKUP

    00000000000000000000.indexこれは、名前がターゲットにすでに存在するかどうかを確認しないため、そこにあるファイルを上書きできます(たとえば、サンプルファイルを使用すると、ファイルのコピーは1つだけ残ります)。

どちらのコマンドも、globstarシェルオプションが次のように設定されてbashいると仮定します。

shopt -s globstar

**これにより、pathnames*と同様に一致するglobパターンがアクティブになります/

関連情報