Kesalahan umum bagi saya, adalah ekstraksi di direktori yang salah.
Setelah saya sadari, saya ingin menghapus semua file ini, dan ekstrak lagi.
Tetapi bagaimana cara mengotomatiskan operasi delete-all-this-crap ini?
Ada saran?
UPD: mesin linux (zsh)
command-line
zsh
archiving
Korjavin Ivan
sumber
sumber
Jawaban:
Ini harus melakukan trik:
Jika arsip Anda berisi jalur absolut dan Anda membukanya di lokasi absolut (untuk ini, Anda perlu menggunakan
-P
opsi daritar
) kamu harus pergised
. Anda juga bisa pergised
keluar, jika Anda benar-benar yakin bahwa tidak ada jalur absolut dalam arsip Anda.Penjelasan
Anda bisa mendapatkan daftar file dalam arsip tar.gz dengan menggunakan
-t
pilihan:Jika ada sedikit kemungkinan ada jalur absolut di arsip Anda dan Anda melakukannya tidak membongkar menggunakan
-P
opsi untuk tar (yang akan membuka ke lokasi absolut alih-alih direktori saat ini atau yang diberikan), Anda perlu menghapus garis miring terkemuka dari daftar file, karenatar -tf
akan selalu menunjukkannya.sed
dapat membantu dengan itu:Membawa pola antara yang pertama dan yang kedua
@
-^//*
, yang cocok dengan satu atau lebih/
di awal baris - dan menggantinya dengan string antara yang kedua dan ketiga@
- dalam hal ini tanpa apa-apa, menghapus pertandingan dengan efektif.Dengan
xargs
Anda dapat menampilkan satu perintah sebagai argumen ke perintah lain:Ini mengambil daftar file, dibatasi oleh baris baru (
-d '\n'
) dan meneruskannya kerm
. Ini akan menghapus file apa pun. Seperti biasa, direktori tidak akan dihapus dan Anda akan mendapatkan pesan kesalahan untuk masing-masing file.Untuk mendapatkan direktori apa pun yang dibuat oleh pembongkaran sebelumnya, Anda harus menggunakannya
rm -d
, yang juga akan dihapus kosong direktori. Output daritar -t
biasanya dipesan berdasarkan abjad, yang berarti bahwa direktori mana pun akan terdaftar sebelum file di dalamnya. Ini berarti bahwa direktori tersebut belum kosong ketikarm
mencoba menghapusnya. Untuk menghindari masalah ini, kami gunakan sajasort -r
untuk menyusun ulang daftar dalam urutan abjad terbalik. Dengan begitu file apa pun dalam direktori akan dihapus sebelumnyarm
mencoba untuk menghapus direktori itu sendiri.Direktori yang berisi file yang tidak ada dalam arsip (misalnya jika direktori sudah ada dan berisi file sebelum membongkar) tidak akan dihapus. Tolong jangan gunakan
rm -r
dari padarm -d
karena itu juga dapat menghapus file dan direktori yang tidak ada dalam arsip.sumber
-P
). Dalam hal itu (setidaknya versi saya)tar t ...
daftar yang terkemuka/
tapitar c ...
ekstrak file dengan slash utama dihapus. Jadi ada ketidaksesuaian dan Anda mengalami bahaya menghapus sesuatu yang tidak diinginkan.