Linuxでn分前に作成されたすべてのファイルを削除する方法


13

ほとんどの場合、tarアーカイブを抽出すると、アーカイブファイルと同じ名前で異なるサフィックスのディレクトリが取得されます。しかし、ある不幸なケースでは、今日出会ったように、tarballを抽出した後、作業ディレクトリに多数のファイルが広がっていることがわかります。これは迷惑です。

それで、私はあなたから学びたいことです-新しく作成されたファイルをどのように移動できますか?そこに「find plus rm」派手なアプローチがあるはずですが、正確な方法はわかりません。

回答:


23

man findと言うのだろうか。その後、あなたの努力を示すことさえできます。

find . -type f -cmin -1
find . -type f -cmin -1 -delete
  • -type f唯一の定期的なファイルが選択されている指定するために使用されます。
  • -cmin -1ファイルのステータスが最後の過去(1)分も経たないうちに変更されました。
  • この-deleteフラグは、既知のユニバースまたはそのようなもの内のすべての電子ファイルを削除するようにfindに指示するため、使用するときは注意してください。

最初のテスト実行を行うことなく、-delete旗は強くお勧めします。

-deleteは移植性のない拡張機能です。

findこれを使用する前にマンページを読むことをお勧めします。これは、状況に適用される可能性のあるさまざまな落とし穴や警告をカバーしているためです。


いいね!-deleteは-exec rm {} \;より簡単に見えます。
PJブルーネット

オプションの選択肢を説明するために時間を割いて1
JADファイルS

5
find . -mtime -60s -exec mv {} /dest/dir \;

直近の60秒間に変更された現在のディレクトリ(およびサブディレクトリ)内のすべてのファイルを検索し、/ dest / dirに移動します。


3
注意して抽出されたアーカイブファイルは、元の変更日を保持する場合があります。作成時間を使用するのが最適です。
Cem Kalyoncu

@CemKalyoncu素晴らしい点。
skarface

0

簡単な方法(グラフィカルインターフェイスがない場合)はmcを使用します。日付でファイルをソートできます。

コマンドラインからtarにあったファイルを削除することもできます。

> rm $( tar -ztf mytar.tar.gz )

(-ztf)はtar.gzファイル用です。通常のtarには(-tf)を、tar.bz2ファイルには(-jtf)を使用できます。

ファイルのリストが大きすぎて、上記のコマンドがチョークする場合、xargsを使用できます。

> tar -ztf mytar.tar.gz | xargs rm

うわー、私の悪い-私は本当に質問を読んでいません-削除するのではなく、移動する必要があります(pls、タイトルを修正、その誤解を招く)。まだそれらを削除してから、新しいディレクトリを作成し、そこにtarを展開できると思います:)。結局、move = copy + deleteです。
サニー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.