Ich möchte alle meine Skripte mit der Endung .sh finden und tarnen/archivieren, also habe ich so etwas geschrieben:
touch ~/archive.tar; find ~ -type f -name '*.sh' -exec rvf ~/archive.tar {} \;
Das Problem ist, dass das Archiv, nachdem ich ein Archiv mit dem Namen archive.tar erstellt habe, die Dateien nicht in das aktuelle Verzeichnis entpackt, sondern in die Verzeichnisse, aus denen es archiviert wurde. Beispielsweise kann ein archiviertes Skript mit dem Namen „archiviert“ werden, ~/Desktop/wtf/delete.sh
aber es wird in einen Ordner entpackt wtf
und nicht in das aktuelle Verzeichnis, in dem ich mich gerade befinde. Wie bearbeite ich also mein Suchskript, damit alle Skripte das Format ./Dateiname.sh haben?
Antwort1
Angenommen, Sie verwenden GNU tar
, können Sie sagen:
tar --transform 's/.*\///' -xzf archive.tgz
Dadurch wird alles bis zum letzten Schrägstrich aus den Dateinamen entfernt.