GNU/Linux >> Linux Esercitazione >  >> Linux

Script Bash per rimuovere il file più vecchio da una cartella

Come ha sottolineato Kos, potrebbe non essere possibile conoscere il file più vecchio (come per data di creazione).

Se il tempo di modifica va bene per te e se il nome del file non ha una nuova riga:

rm "$(ls -t | tail -1)"

Sembra che tu stia bene eliminando il file modificato più vecchio invece del file creato più vecchio;

Considero questo il metodo più sicuro, in quanto non si romperà sui nomi di file contenenti newline:

stat --printf='%Y %n\0' * | sort -z | sed -zn '1s/[^ ]\{1,\} //p' | xargs -0 rm
  • stat --printf='%Y %n\0' * :stampa un elenco separato da NUL dell'ora dell'ultima modifica seguito dal percorso del file per ogni file nella directory di lavoro corrente;
  • sort -z :ordina l'elenco utilizzando NUL come separatore di riga;
  • sed -zn '1s/[^ ]\{1,\} //p' :rimuove la prima occorrenza di una stringa contenente uno o più caratteri non uno spazio seguito da uno spazio dalla prima riga con terminazione NUL e la stampa;
  • xargs -0 rm :passa la riga con terminazione NUL a rm come argomento;
% touch file1
% touch file2
% stat -c '%Y %n' *            
1447318965 file1
1447318966 file2
% stat --printf='%Y %n\0' * | sort -z | sed -zn '1s/[^ ]\{1,\} //p' | xargs -0 rm 
% ls
file2

Linux
  1. Perché lo script Bash non riconosce gli alias?

  2. Il Bash '?

  3. Script Bash per rimuovere il file più vecchio da una cartella?

  4. Come rimuovere la Bom da un file Utf-8?

  5. Non riesci a ottenere il codice di uscita corretto da uno script?

35 Esempi di script Bash

Rimuovi directory in Linux - Come eliminare una cartella dalla riga di comando

Come rimuovere (^M) caratteri da un file in Linux

Come rimuovere le linee che appaiono sul file B da un altro file A?

Apri Vim dall'interno di uno script di shell Bash

Variabile in Bash Script che mantiene il valore dall'ultima esecuzione