Dapatkan hasil keluaran untuk menghapus file nanti

3

Saya ingin mengambil hasil dari perintah ini:

find . -type f -size +200M -exec ls -lh {} \;

simpan konten ke variabel dari beberapa bentuk, dan kemudian hapus file yang ditemukan.

Bagaimana saya bisa melakukan ini?

Dave
sumber
Sangat rumit untuk melakukan hal ini karena kesulitan yang disebabkan oleh parameter "-lh" pada LS. Meskipun ada sejumlah cara untuk mendapatkan "sebagian ada". Jika Anda dapat mendeskripsikan tujuan Anda, mungkin kami dapat memberikan solusi yang elegan, jika tidak, Anda sedang melihat pengkodean yang sangat kompleks untuk menyandikan dan mendekode output. Selain itu, apakah Anda benar-benar perlu menyimpan konten sebagai variabel - akan lebih mudah digunakan jika Anda menyimpannya sebagai file [bahkan untuk penyimpanan sementara / memori] daripada berurusan dengan masalah linefeed.
davidgo

Jawaban:

1

Anda tidak perlu menyimpan hasil find dalam variabel hanya untuk dapat menghapus file (kecuali Anda memiliki beberapa persyaratan khusus yang tidak Anda sebutkan), sebagai find menyediakan spesial -delete parameter yang akan melakukannya untuk Anda:

find . -type f -size +200M -print -delete

Sebagai parsing output dari ls perintah tidak disarankan .

Jika Anda benar-benar ingin mem-parsing file yang dikembalikan oleh find, Anda perlu melakukan sesuatu seperti:

find . -type f -size +200M -print0 | xargs -0 rm -v

Karena Anda tidak dapat menyimpan variabel shell dengan karakter nol, dan Anda tidak ingin memecah skrip pada spasi (yang dapat menyebabkan serangga raksasa ), solusinya dapat menyimpan daftar dalam file sementara atau membuat serialisasi data base64 ).

kenorb
sumber