Mam kilka plików w folderze i chcę zastąpić każdy znak spacji we wszystkich nazwach plików podkreśleniami. Jak mogę to osiągnąć?
96
To powinno wystarczyć:
for file in *; do mv "$file" `echo $file | tr ' ' '_'` ; done
1 - foo.jpg
a mój folder już1.jpg
w niej był.for file in *; do mv "$file" $(echo $file | tr ' ' '_') ; done
*
naPATH_TO_YOUR_DIRECTORY
.Wolę używać polecenia „rename”, które przyjmuje wyrażenia regularne w stylu Perla:
Możesz wykonać próbny bieg z flagą -n:
źródło
rename " " "_" *
rename
niedostępne w OSX.rename
jest dostępny.Użyj sh ...
Jeśli chcesz to wypróbować przed naciśnięciem spustu, po prostu zmień
mv
naecho mv
.źródło
Jeśli używasz basha:
źródło
mv --help' for more information. mv: when moving multiple files, last argument must be a directory Try
mv --help ', aby uzyskać więcej informacji.mv --help' for more information. mv: missing file argument Try
mv --help ', aby uzyskać więcej informacji. mv: missing file argument Spróbujmv --help' for more information. mv: missing file argument Try
mv --help ', aby uzyskać więcej informacji.A co jeśli chcesz zastosować zadanie zamiany rekurencyjnie ? Jak byś to zrobił?
Cóż, właśnie znalazłem odpowiedź. Nie jest to najbardziej eleganckie rozwiązanie (próbuje również zmienić nazwy plików, które nie spełniają warunku), ale działa. (BTW, w moim przypadku musiałem zmienić nazwy plików na „% 20”, a nie na podkreślenie)
źródło
Spróbuj czegoś takiego, zakładając, że wszystkie twoje pliki to .txt:
źródło
tr --help' for more information. mv: missing file argument Try
mv --help ', aby uzyskać więcej informacji.Oto inne rozwiązanie:
źródło
Cytuj swoje zmienne:
Usuń „echo”, aby dokonać faktycznej zmiany nazwy.
źródło
\'1130 lake micigan view.jpg\'': No such file or directory mv: cannot stat
\ '1130_1_bedroom_floor_plan.jpg \' ': Brak takiego pliku lub katalogu mv: nie można stat\'1130_BedPicture_8.jpg\'': No such file or directory mv: cannot stat
\' 1130_diningroom_table.jpg \ '': Brak takiego pliku lub kataloguNajłatwiejszym sposobem zastąpienia ciągu (w twoim przypadku znaku spacji) innym
Linux
jest użyciesed
. Możesz to zrobić w następujący sposóbMam nadzieję że to pomoże.
źródło
Wydaje mi się, że odpowiedź brzmi: Zastąp spacje w nazwach plików podkreśleniami .
źródło
Aby zmienić nazwy wszystkich plików z użyciem
.py
rozszerzenia,find . -iname "*.py" -type f | xargs -I% rename "s/ /_/g" "%"
Przykładowe wyjście,
źródło