すでに何かが入っているディレクトリに何かを解凍しました。代わりに別のディレクトリに解凍したかったのです。今すぐに区別するファイルが多すぎます。しかし、私が解凍したファイルは今作成されています(右?)、元のファイルは長い間(少なくとも1日)修正されていません。作成された情報に基づいてこれらのuntarファイルのみを削除する方法はありますか?linuxのディレクトリに最近作成されたすべてのファイルを削除するには?
答えて
Tarは通常、ファイルのタイムスタンプを復元するため、時間によるフィルタリングは機能しません。
それでもtarファイルを持っている場合は、あなたがのようなものでアンパック何を削除するためにそれを使用することができます:
tar tf file.tar --quoting-style=shell-always |xargs rm -i
上記のほとんどのケースでは動作しますが、キャリッジリターンを持っていないすべての(ファイル名彼らはそれを壊すだろう)ので、注意してください。
-r
を追加することでディレクトリを削除できますが、トップレベルのディレクトリを手動で削除するほうが安全です。
find。 -mtime -1 -type f | xargs rm
ただし、最初に
でテストしてください。 -mtime -1 -type f | xargs echo
これは2つのこと以外は良いでしょう。まず、**常に** -print0'と 'xargs -0'を使います。ファイル名にランダムな空白文字を入れないようにしてください。第二に、 'tar'はタイムスタンプを復元するので、ここでmtimeを実際に使うことはできません。おそらく、あなたのファイルシステムがそれを更新するように設定されている場合は、おそらくatimeです。 – Omnifarious
また、注意してください。最後の10分間に変更されたファイルに対して-mmin -10を検索する – sehe
複雑さが増す順にこの質問にいくつかの回答があります。
まず、これがオフで、この特定のインスタンスでは、ファイル名に奇妙な文字がないことを絶対に確信しています(スペースはOKですが、タブ、改行またはその他の制御文字、これは動作します:
tar -tf file.tar | egrep '^(\./)?[^/]+(/)?$' | egrep -v '^\./$' | tr '\n' '\0' | xargs -0 rm -r
すべては、サブディレクトリのすべてのサブディレクトリをスキップすることです。
ファンキーなファイル名で動作するこれを行うための別の方法はこれです:あなたのアーカイブが展開されたディレクトリを作成しますが、あなたはすでにとにかくすることを望んでいたように聞こえるだろう
mkdir foodir
cd foodir
tar -xf ../file.tar
for file in *; do rm -rf ../"$file"; done
。また、名前が.
で始まるファイルは処理されません。
.
で始まるファイルとそのメソッドの作業を行うには、次の操作を行います。
mkdir foodir
cd foodir
tar -xf ../file.tar
find . -mindepth 1 -maxdepth 1 -print0 | xargs -0 sh -c 'for file in "[email protected]"; do rm -rf ../"$file"; done' junk
最後に、Mat's answerから取って、あなたはこれを行うことができますし、それはどんなファイル名では動作しないuntarしなければならなくなります再びディレクトリ:
tar -tf file.tar | egrep '^(\./)?[^/]+(/)?$' | grep -v '^\./$' | tr '\n' '\0' | xargs -0 bash -c 'for fname in "[email protected]"; do fname="$(echo -ne "$fname")"; echo -n "$fname"; echo -ne "\0"; done' junk | xargs -0 rm -r
あなたがして1回のパスでファイルやディレクトリを処理することができます
tar -tf ../test/bob.tar --quoting-style=shell-always | sed -e "s/^\(.*\/\)'$/rmdir \1'/; t; s/^\(.*\)$/rm \1/;" | sort | bash
あなたはより多くの処理を必要と改行を含むファイル名を処理するために「bashの」
tar -tf ../test/bob.tar --quoting-style=shell-always | sed -e "s/^\(.*\/\)'$/rmdir \1'/; t; s/^\(.*\)$/rm \1/;" | sort
へのパイプをオフのままに起こるために何が起こっているか見ることができます。
- 1. linux最近変更されたファイルに基づいてシンボリックリンクを作成する
- 2. 最近追加されたディレクトリをAppleScriptのディレクトリに削除します
- 3. LinuxのGTK2/GTK3最近使用したファイルのブラウザは、最近のシェル作成されたファイル
- 4. 指定されたディレクトリにゼロサイズのすべてのファイルを削除します
- 5. Gitリポジトリの作業ディレクトリにないファイルをすべて削除するには?
- 6. ローカルに削除されたファイルを再作成するには?
- 7. Codeigniter:すべてのファイルを削除した後にディレクトリを削除します
- 8. /ディレクトリから始まるすべてのディレクトリ/サブディレクトリ内に新しく作成、変更、削除されたすべてのファイルを見つけるPythonコード
- 9. 今日作成されたすべてのレコードを削除するには?
- 10. 指定されたユーザーによって作成されたすべてのファイルを削除します
- 11. Linuxで生成されたファイルから^ Mを削除する
- 12. linux:最近変更された* .phpファイルを検索する
- 13. 一度に更新、作成、削除された複数のファイルにすべての操作を行う方法
- 14. PHPで指定されたディレクトリ下のすべてのファイルを削除するには?
- 15. シェルスクリプトを削除するlinuxのディレクトリからファイルとサブディレクトリを削除する
- 16. Q:VSCode最近開いた最近のCtrl + Rショートカットが削除されました
- 17. 削除ダイナミックに作成されたdivの最後の出現
- 18. MongoDB:削除された投稿のコメントをすべて削除するには?
- 19. チェックされたすべてのオブジェクトを削除するには
- 20. ディレクトリのすべての画像を削除するには
- 21. PHPエラー - 作成されたすべてのファイルまたはディレクトリが0
- 22. Laravel File Storageディレクトリ内のすべてのファイルを削除する
- 23. ディレクトリ内のすべての.gzを抽出して削除する - Linux
- 24. iOS Swift 3 - 写真の最近削除された画像を削除するには
- 25. Linuxの別のディレクトリにあるファイルのシンボリックリンクを作成する
- 26. このシェルコマンドは、最後のXディレクトリを除くすべてのディレクトリを安全に削除できますか?
- 27. Smartgitの設定ディレクトリを削除してもすべて削除されない
- 28. グループによって最近作成されたレコードのフィルタリングポータル
- 29. すべての〜ファイルを削除するLinuxコマンド
- 30. 一時ファイル/ディレクトリを作成すると、いつ削除されますか?
ファイル名のスペースを使って動作させるのは本当に簡単です。それははるかに良い答えになります。 – Omnifarious
@omnifaこの作業をスペースで行うにはどうすればいいですか?抽出されたディレクトリを削除するには、rmの後に-Rも含めますか? – AnkurVj
@AnkurVj:残念なことに、実際には、タールにはヌル文字で区切られたファイル名のリストを作成する方法はありませんが、これはかなり残念です。そして、そうです、 'rm'の後ろに' -r'があるはずです。 Matは答えを更新していないので、私は自分で入れます。 – Omnifarious