Usunąć wszystkie pliki, których nazwy plików zawierają określony ciąg?

22

Zmieniłem motyw Wordpress. Starszy utworzył tyle obrazów na serwerze. Mój nowy motyw ich nie potrzebuje, więc chcę usunąć wszystko. Jak mogę to zrobić?

Na przykład:
Obraz domyślny:12_angry_men_lone_holdout.jpg

Chcę usunąć:

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

Korzystanie z Digitalocean, Ubuntu 13.10.

Ibrahim Mumcu
źródło
na typie terminala, man rmaby wyświetlić stronę manuala polecenia rm.
hmayag
Wygląda na to, że te obrazy to automatycznie tworzone miniatury ze zdjęć przesłanych do biblioteki multimediów WorldPress. Jeśli tak, to nie usuwaj tych plików w terminalu na serwerze. Otwórz stronę administratora WordPress, otwórz „Ustawienia”> „Media”. Ustaw tam pożądane rozmiary miniatur. Następnie zainstaluj wtyczkę Regeneruj miniatury i ponownie utwórz wszystkie miniatury (może to potrwać kilka minut, w zależności od liczby obrazów w bibliotece multimediów).
Bob

Odpowiedzi:

22

Jeśli znajdują się w tym samym folderze, użyj * symbolu wieloznacznego, aby to osiągnąć:

rm *text*

Gdzie textjest ciąg, który zawiera nazwa pliku.

myhau
źródło
Właściwie to nie jest jeden katalog, ale na razie mogę to zrobić pojedynczo. Dziękuję Ci!
Ibrahim Mumcu,
27

Służy finddo rekurencyjnego wyszukiwania i usuwania plików z „tekstem” w ich nazwach:

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

Możesz także wcześniej uruchomić find -type f -name '*text*'(bez -delete), aby upewnić się, że nie usuniesz żadnych plików, których nie zamierzałeś usunąć.


W rzeczywistości możesz umieszczać symbole wieloznaczne w dowolnym miejscu ciągu wyszukiwania, więc -name '12_angry_men_lone_holdout-*.jpg'może być bardziej odpowiednie w twoim przypadku.

n.st
źródło
Czy nie ma potrzeby reprezentowania ścieżki pliku
Avinash Raj
@AvinashRaj Jeśli pierwszy parametr nie jest ścieżką, findprzeszukuje bieżący katalog roboczy.
n.st
Ktoś położył. zaraz po znalezieniu do przeszukania bieżącego katalogu roboczego.
Avinash Raj,
1
@AvinashRaj To byłoby zbędne. Zgodnie z man find: Jeśli nie podano ścieżek, używany jest bieżący katalog.
n.
@AvinashRaj Okazuje się, że POSIX specyfikacji findrzeczywiście nie wymagają ścieżkę. Domyślnie .jest to modyfikacja dodana przez GNU find. Gdyby to był Unix i Linux , dodałbym to do mojej odpowiedzi, ale ponieważ Ubuntu jest domyślnie wyposażone w GNU find, wolałbym nie mylić nowych użytkowników bardziej niż to konieczne. ;)
n.
1

Spróbuj tego:

rm -rf 12_angry_men_lone_holdout-*

Spowoduje to keep 12_angry_men_lone_holdout.jpgi usunie pliki o wymiarach (290 x 166)

I proszę pamiętać

rm -rf 12_angry_men_lone_holdout.*

usunie również plik domyślny, którego potrzebujesz.

Aneesh
źródło
0
find . -type f -name '*[0-9]x[0-9]*' -delete

Uruchom to w katalogu nadrzędnym. Spowoduje to usunięcie wszystkich plików, które mają cyfrę, po której następuje znak „x”, a następnie kolejna cyfra w nazwie.

Nadal bądź ostrożny, może to również usunąć oryginalne pliki, jeśli ich nazwa zawiera powyższy wzorzec (mało prawdopodobne). Uruchom go najpierw bez „-delete”, aby sprawdzić, czy masz jakieś pliki o takiej nazwie. W takim przypadku wystarczy znaleźć bardziej restrykcyjny wzór.

Tamas
źródło