Видалити всі файли, чиї імена файлів містять певний рядок?


22

Я змінив тему wordpress. Старший створив стільки зображень на сервері. Моїй новій темі вони не потрібні, тому я хочу видалити всі. Як я можу це зробити?

Наприклад:
зображення за замовчуванням:12_angry_men_lone_holdout.jpg

Я хочу видалити:

12_angry_men_lone_holdout-290x166.jpg
12_angry_men_lone_holdout-700x300.jpg 
12_angry_men_lone_holdout-50x50.jpg

Використовуючи Digitalocean, Ubuntu 13.10.


на термінальному типі, man rmщоб побачити сторінку керівництва команди rm.
hmayag


Схоже, ці зображення є автоматично створеними ескізами із зображень, завантажених у вашу медіатеку WorldPress. Якщо так, то не видаляйте ці файли в терміналі на сервері. Відкрийте сторінку адміністратора WordPress, відкрийте «Налаштування»> «Медіа». Встановіть потрібні розміри ескізів. Потім встановіть плагін Regenerate Thumbnails і заново створіть усі мініатюри (це може зайняти кілька хвилин, залежно від кількості зображень у вашій медіатеці).
Боб

Відповіді:


22

Якщо вони знаходяться в одній папці, використовуйте * wildcard для досягнення цього:

rm *text*

Де textрядок, що містить ім'я файлу.


Насправді це не один каталог, але я можу це зробити за одним до цього часу. Дякую!
Ібрагім Мумку

27

Використовуйте findдля рекурсивного пошуку та видалення файлів із "текстом" у своїх назвах:

find -type f -name '*text*' -delete

Ви також можете запустити find -type f -name '*text*'(без -delete) перед цим, щоб переконатися, що ви не видалите файли, які не збиралися видаляти.


Насправді ви можете розміщувати підстановку в будь-якому місці в рядку пошуку, тому це -name '12_angry_men_lone_holdout-*.jpg'може бути більш підходящим у вашому випадку.


Хіба що не потрібно представляти шлях до файлу
Avinash Raj

@AvinashRaj Якщо перший параметр не шлях, виконайте findпошук у поточній робочій директорії.
n.st

Хтось поставив. відразу після пошуку для пошуку в поточному робочому каталозі.
Avinash Raj

1
@AvinashRaj Це було б зайвим. Відповідно man find: Якщо шляхи не вказані, використовується поточний каталог.
n.st

@AvinashRaj Виявляється, POSIX специфікації для findфактично це вимагає шляху. Дефолт до .- це модифікація, яку додає GNU find. Якби це Unix та Linux , я би додав це до своєї відповіді, але оскільки Ubuntu за замовчуванням постачається з GNU, я краще не плутати новачків більше, ніж потрібно. ;)
n.st.

1

Спробуйте це:

rm -rf 12_angry_men_lone_holdout-*

Це дозволить keep 12_angry_men_lone_holdout.jpgвидалити файли з розмірами (290x166)

І будь ласка, пам’ятайте

rm -rf 12_angry_men_lone_holdout.*

також видалить файл за замовчуванням, який вам потрібен.


0
find . -type f -name '*[0-9]x[0-9]*' -delete

Запустіть це в батьківській директорії. Це видалить усі файли, у яких є цифра, а потім символ "x", а потім їхня інша цифра.

Але будьте обережні, це також може видалити оригінальні файли, якщо їх ім'я містить вищезазначений шаблон (навряд чи). Спершу запустіть його без "-delete", щоб побачити, чи є у вас файли з таким ім'ям. Якщо це так, вам просто потрібно буде знайти більш обмежувальну схему.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.