+1 To rozwiązanie działa nawet jeśli masz spacje w nazwie pliku, ale masz na myśli „$ f” zamiast „f”.
Adam Zalcman,
Rozszerzanie parametrów powłoki jest nieco tajemnicze, zamiast tego można użyć basename: dla f w * .JPG; do mv "$ f" "` basename $ f .JPG`.jpg "; zrobione
matematyka
@math: Wolę moją wersję, ponieważ działa z nazwami plików zawierającymi białe znaki i będzie z nią współpracować /path/to/*.JPG. Oczywiście,
proszę
Oczywiście basename usunie wiodące katalogi, ale będzie działał ze spacjami w nazwach plików. (Nie sądzę, żeby warto było odpowiedzieć;) więc opublikowałem to jako komentarz)
matematyka
10
Jeśli możesz korzystać z zewnętrznych narzędzi (nie tylko bash), sprawdź renamepolecenie!
Łatwo byłoby sprawić, by działało to dla plików ze spacjami w nazwie: wystarczy dodać podwójne cudzysłowy wokół obu argumentów mv.
Adam Zalcman,
Nie mam spacji Co dodać, aby tak się stało w katalogu CURRENT. W tej chwili pojawia się błąd - mv: nie można stat `* .JPG ': Brak takiego pliku lub katalogu
Odpowiedzi:
Korzystanie z rozszerzenia parametru powłoki :
Te
"
znaki będą dbać o nazwach zawierających spacje, jak często robić fotografie.źródło
/path/to/*.JPG
. Oczywiście,Jeśli możesz korzystać z zewnętrznych narzędzi (nie tylko bash), sprawdź
rename
polecenie!rename
Jest częściąutil-linux
.źródło
perl
która akceptuje różne argumenty, aby zrobić to samo.Jeśli masz spacje w nazwach plików:
źródło
Proponuję rzucić okiem na
mmv
polecenie. Nadaje się idealnie do tego rodzaju zadań. W twoim scenariuszu byłoby to:Strona podręcznika jest pełna przykładów, więc nie trzeba długo przyzwyczajać się do niej.
W systemach Debian można go zainstalować z:
źródło
jeśli nie masz spacji w nazwach plików:
źródło
mv
.