Jak usunąć wszystkie pliki, które zostały utworzone n minut temu w systemie Linux

15

Wydaje mi się, że w większości przypadków po rozpakowaniu archiwum tar otrzymamy katalog o tej samej nazwie co plik archiwum, ale z innym sufiksem. Ale w niektórych pechowych przypadkach, jakie spotkałem dzisiaj, po rozpakowaniu archiwum, znajduję wiele plików rozproszonych w katalogu roboczym, co jest uciążliwe.

Więc chcę się od ciebie nauczyć - w jaki sposób mogę przenieść te nowo utworzone pliki? Wiem, że powinno to być jakieś fantazyjne podejście „znajdź plus rm”, ale nie wiem dokładnie jak.

HaiYuan Zhang
źródło

Odpowiedzi:

25

Zastanawiam się, co man findby powiedział. Wtedy możesz nawet pokazać swoje wysiłki.

find . -type f -cmin -1
find . -type f -cmin -1 -delete
  • -type fJest używany do określenia jedynie wybrane są zwykłymi plikami.
  • -cmin -1Status plik został ostatnio zmieniony w mniej niż w ubiegłym (jedną) minutę.
  • -deleteFlaga mówi znaleźć na usunięcie wszystkich plików elektronicznych w znanym wszechświecie, czy coś takiego, więc należy zachować ostrożność podczas korzystania z niej.

Najpierw robi test uruchomić bez tej -deleteflagi jest zdecydowanie zalecane.

Uwaga -deletejest nieprzenośnym rozszerzeniem.

findPrzed użyciem tego polecam przeczytać stronę podręcznika, ponieważ obejmuje ona różne błędy i ostrzeżenia, które mogą mieć zastosowanie w twojej sytuacji.

Mctylr
źródło
Miły! -delete wygląda łatwiej niż -exec rm {} \;
PJ Brunet,
+1 za poświęcenie czasu na wyjaśnienie opcji
Jad S
5
find . -mtime -60s -exec mv {} /dest/dir \;

Znajduje każdy plik w bieżącym katalogu (i podkatalogach), który został zmodyfikowany w ciągu ostatnich 60 sekund, i przenosi go do / dest / dir.

skarface
źródło
3
Ostrożnie wyodrębnione pliki archiwów mogą zachować oryginalną datę modyfikacji. Najlepiej wykorzystać czas tworzenia.
Cem Kalyoncu,
@CemKalyoncu świetny punkt.
skarface
0

Najprostszym sposobem (pod warunkiem, że nie masz interfejsu graficznego) będzie użycie mc . Może sortować pliki według daty.

Możesz również usunąć pliki, które były w tar z wiersza poleceń:

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

(-ztf) dotyczy plików tar.gz. Możesz użyć (-tf) dla normalnych tabel lub (-jtf) dla plików tar.bz2.

Jeśli lista plików jest zbyt duża, a powyższe polecenie dusi, możesz użyć xargs:

> tar -ztf mytar.tar.gz | xargs rm
Słoneczny
źródło
wow, moje złe - tak naprawdę nie przeczytałem pytania - musisz je przenieść, a nie usunąć (proszę, popraw tytuł, wprowadzające w błąd). Myślę, że nadal możesz je usunąć, a następnie utworzyć nowy katalog i rozpakować tam :). Przenieś = kopiuj + usuń.
Sunny