Я використовую find
для пошуку та видалення резервних файлів, але хочу виключити певні каталоги з пошуку. Резервні імена файлів може закінчуватися .bck
, bak
, ~
або backup
.
Код мінімального робочого прикладу (MWE) з виключенням лише трьох каталогів:
#! /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
Синтаксис \( -path "dir1" -o -path "dir2" ... -o -path "dirN" \) -prune
здається трохи незграбним, особливо, якщо є близько десяти каталогів, які потрібно виключити, хоча я показав лише три в MWE.
Чи є більш елегантний спосіб використання або вхідного файлу зі списком виключених каталогів, або масиву або структури, подібної до списку, які можна було б натиснути на службу?
Мені шкода, що я не був більш чітким, коли писав своє оригінальне запитання.
Примітка: trash-put
це утиліта, яка переміщує файли Trashcan
замість видалення [1].