Red Hat Enterprise Linux には Kafka プロダクションマシンがあります。
/var/kafka/kafka-logs
そのエンディングの下のすべてのファイルをどのように削除しますか.index
?.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-logs
find
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
存在しないものを使用しているとします。数千次のファイルのうち:
rm /var/kafka/kafka-logs/**.index
mv /var/kafka/kafka-logs/**.index /var/tmp/INDEX_BACKUP
00000000000000000000.index
これは、名前がターゲットにすでに存在するかどうかを確認しないため、そこにあるファイルを上書きできます(たとえば、サンプルファイルを使用すると、ファイルのコピーは1つだけ残ります)。
どちらのコマンドも、globstar
シェルオプションが次のように設定されてbash
いると仮定します。
shopt -s globstar
**
これにより、pathnames*
と同様に一致するglobパターンがアクティブになります/
。