Nel passaggio 1, sto cercando di "trovare" il file più vecchio nell'albero delle directory, che ho risolto seguendo questa domanda .
Ora voglio usare xargs
per eliminare in modo interattivo dal più vecchio al più recente.
Dal momento che questo find -type f -printf '%T+ %p\n' | sort | xargs -0 -d '\n' rm -i
non funziona. Ho visto in un altro post
find . -type f -print0 | xargs -0 ls -rt
ma aggiungerlo xargs
non funziona, purtroppo.
pi@raspberrypi:/usr/share/doc/samba$ find . -type f -print0 | xargs -0 ls -rt | xargs -0 -d '\n' rm -i
rm: remove write-protected regular file ‘./examples/LDAP/samba.schema.oc.IBM-DS’? rm: remove write-protected regular file ‘./examples/LDAP/samba-schema-netscapeds5.x.README’? rm: remove write-protected regular file ‘./examples/LDAP/samba-schema.IBMSecureWay’? rm: remove write-protected regular file ‘./examples/LDAP/samba.schema.gz’? rm: remove write-protected regular file ‘./examples/LDAP/samba-schema-FDS.ldif.gz’? rm: remove write-protected regular file ‘./examples/LDAP/samba.schema.at.IBM-DS.gz’? rm: remove write-protected regular file ‘./examples/LDAP/samba-nds.schema.gz’? rm: remove write-protected regular file ‘./examples/LDAP/samba.ldif.gz’? rm: remove write-protected regular file ‘./examples/LDAP/ol-schema-migrate.pl.gz’? rm: remove write-protected regular file ‘./examples/LDAP/get_next_oid’? rm: remove write-protected regular file ‘./README.Debian’? rm: remove write-protected regular file ‘./TODO.Debian’? rm: remove write-protected regular file ‘./NEWS.Debian.gz’? rm: remove write-protected regular file ‘./copyright’? rm: remove write-protected regular file ‘./changelog.Debian.gz’? rm: remove write-protected regular file ‘./examples/LDAP/README’?
Si noti che questo non è un problema di autorizzazioni. Ho usato /usr/share/doc/samba
come esempio per evitare di pubblicare i miei nomi di file reali.
Cercando sul web, non sono riuscito a trovare alcun copione ricorsivo (albero intero), gestione di caratteri in bianco e anche interattivo. Quindi l'ho fatto. Ciò non gestirà tutti i tipi di caratteri speciali. Quindi qualsiasi miglioramento sarebbe accettato.
#!/bin/bash
find -type f -printf '%T+ %p\n' | sort | head -n 3 > /tmp/1
cut -c32- /tmp/1 | awk '{print "rm -i", "\""$_"\""}'/tmp/2
bash /tmp/2