Muszę rekurencyjnie usunąć wszystkie pliki ze wszystkich podkatalogów, w których nazwa pliku zawiera liczbę, po której następuje „x”, a następnie co najmniej dwa razy.
Przykład:
Chciałbym usunąć te pliki:
'aaa-12x123-123x12.jpg'
'aaa-12x12-123x12-12x123.jpg'
Ale NIE chcę usuwać tych plików:
'aaa.jpg'
'aaa-12x12.jpg'
'aaaxaaa-123x123.jpg'
'aaaxaaa-aaaxaaa.jpg'
Jak mogę to zrobić (z powłoki bash)
-delete
nie-exec rm
działał dla mnie w Bash na Windows. Ale tak sięfind /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' | xargs rm
-print0
ixargs -0
, inaczej komenda nie powiedzie się z nazw plików zawierających spacje lub apostrofów. Ale-delete
i-exec rm
zrobić pracę na systemie Windows. Jeśli coś nie działa, to nie z powodu ich użycia.find
, więc upewnij się, że narzędzia Unix są pierwszePATH
.Prawidłowe polecenie to:
find . -type f -iregex '.*[0-9]x[0-9]*\.jpg$'
spowoduje to pobranie tylko plików o nazwach: „aaa-12x12.jpg”, ale nie „aaa-12x12red.jpg”
źródło