find
Yedek dosyaları bulmak ve silmek için kullanıyorum , ancak aramadan belirli dizinleri hariç tutmak istiyorum. Yedek dosya adları son bulabilir .bck
, bak
, ~
, veya backup
.
Hariç tutulacak yalnızca üç dizin içeren Minimum Çalışma Örneği (MWE) kodu:
#! /bin/bash
find . -type d \( -path "./.*" -o -path "./Music" -o -path "./Documents" \) -prune -o -type f \( -name "*.bck" -o -name "*.bak" -o -name "*~" -o -name "*.backup" \) -print0 | xargs -0 --no-run-if-empty trash-put
Sözdizimi \( -path "dir1" -o -path "dir2" ... -o -path "dirN" \) -prune
biraz aksak görünüyor, özellikle de hariç tutulacak yaklaşık on dizin varsa, ancak MWE'de sadece üç tane göstermiştim.
Hariç tutulan dizinlerin listesi olan bir girdi dosyasını veya hizmete basılabilen dizi veya liste benzeri bir yapıyı kullanmanın daha zarif bir yolu var mı?
Orijinal sorumu yazarken daha açık olmadığım için üzgünüm.
Not: trash-put
dosyaları Trashcan
silmek yerine taşımak için kullanılan bir yardımcı programdır [1].