Щось, що я вважаю, я повинен знати точно: якщо я ls <something>
, rm <something>
вилучу точно ті самі файли, що й ls
відображалися? Чи є обставини, коли rm
можна було видалити файли, які ls
не відображалися? (Це в 18.04 баш)
Редагувати: дякую всім, хто відповів. Я думаю, що повна відповідь - це комбінація всіх відповідей, тому я прийняв найбільш відповідальну відповідь як "відповідь".
Несподівані речі, які я навчився на цьому шляху:
ls
не так просто, як можна подумати, в обробці його аргументів- У простому, не налаштованому на встановлення Ubuntu, псевдонімах .bashrc
ls
- Не називайте ваші файли, починаючи з тире, оскільки вони можуть виглядати як аргументи команд, а іменування одного -r це вимагає!
find -delete
краще, ніж rm
? Ви говорите "Саме тому" , але мені абсолютно незрозуміло, до чого це стосується. Також зауважте, що find
виклик буде видаляти всі файли рекурсивно в поточному каталозі, де rm
буде просто видалено файли в безпосередньому каталозі. Крім того -name *
, це не-оп. Загалом, я дуже здивований вашими порадами ...
find
полягає в тому, що ви можете запустити його, переглянути всі файли, а потім виконати ту саму команду -delete
. Оскільки ви вже бачили результати find
, не повинно бути ніяких двозначностей щодо того, що буде видалено (я хотів би почути більше деталей про це у формі відповіді)
-delete
" - Але як це краще, ніж запустити ls <filespec>
, після чого rm <filespec>
(що ОП вже знає, як робити)?
find ... -print
спочатку, щоб підтвердити, які файли буде видалено, а потім find ... -delete
ви все одно видалите файли, створені між двома командами. Якщо ви використовуєте і те, -print
і інше -delete
, ви не отримаєте підтвердження, а лише звіт про те, що було видалено (а ви можете також використовувати rm -v
).
rm
немає--dry-run
прапора ...