Bir dosyadaki dosya adları listesinde komut nasıl çalıştırılır?


Yanıtlar:


11

Satır başına bir dosyanız varsa, bunu yapmanın bir yolu şudur:

tr '\n' '\0' < list_of_files_to_be_deleted.txt | xargs -0 -r rm --

Dosya listesi, trdosya ayırıcıyı satır xargsbeslemesinden boş bayta değiştiren komuta girdi olarak verilir ve komut, girdi üzerinde boş baytlarla ayrılmış dosyaları okur ve rm komutunu bağımsız değişken olarak eklenen dosyalarla başlatır.


1
Ben de rm --sadece yerine kullanmanızı öneririz rm, böylece tire ile başlayan dosya adları rmparametre olarak ele alınmaz .
artyom

Daha monu.txt' Try fazla bilgi için dostum ........ tr: extra operand tr --help ' işe yaramadı . rm: eksik işlenen Daha fazla bilgi için rm --help komutunu deneyin. ........ Bu görebildiğim tüm wat
monu

1
Dosya adından önceki <karakterini kaçırdınız mı?
Jonas Berlin

@Artyom 'un önerisine göre xargs komutunu biraz da ekledim - ve kaldırılacak dosya yoksa rm çalıştırmadığından emin olmak için -r ekledim.
Jonas Berlin

5

Yukarıdaki cevap, boşlukları ve "garip karakterleri" olan dosya adlarını işlemek için büyük uzunluklara gitmesi açısından iyidir. Ancak en basit yol, eğer dosya isimleri aklı başındaysa, sadece (uyarı, bashizm!):

rm $(< /the/file/with/names)

Düzenli kabuk için:

rm `cat /the/file/with/names`
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.