2013-03-11 19 views
22

mam setki plików jpg w różnych folderach tak:Usuń spacje z nazw plików w Linuksie

  • 304775 105_01.jpg
  • 304775 105_03.jpg
  • 304775 105_05.jpg
  • 304775 105_07 .jpg
  • 304775 105_02.jpg
  • 304775 105_04.jpg
  • 304775 10 5_06.jpg

Zasadniczo potrzebuję usunąć PRZESTRZENIE. Znam polecenie, aby zmienić spacje na podkreślenia:

$ rename "s/ /_/g" * 

Ale nie potrzebuję podkreśleń w tym przypadku. Po prostu muszę usunąć przestrzeń. Próbowałem wykonać następujące czynności, ale to nie zadziałało:

$ rename "s/ //g" * 

Każda pomoc będzie doceniona.

Odpowiedz

20

Można zrobić coś takiego:

IFS="\n" 
for file in *.jpg; 
do 
    mv "$file" "${file//[[:space:]]}" 
done 
+0

To działa !!! Dziękuję Ci bardzo! Czy możesz wyjaśnić, dlaczego $ rename "s/// g" * nie działa? –

+0

Zmiana nazwy "s/// g" * działa dobrze dla mnie. Może jest coś dziwnego w twoim środowisku. Czy używasz bash? – Blake

+0

Tak używam bash. Musi być coś dziwnego w moim środowisku. –

32

Poniższe działałyby na wypadek, gdyby było to naprawdę miejsce.

$ rename "s/ //g" * 

Spróbuj

$ rename "s/\s+//g" * 

\s jest biały znak, należące do zestawu [ \t\r\n].

+1

Skąd wiesz, czy to naprawdę jest spacja? Dla mnie wygląda jak przestrzeń. BTW, $ rename "s/\ s + // g" * również nie działa. –

+1

@SamTimalsina Substytucja podkreślników zastąpiła dla ciebie, ale przestrzeń nie będzie? Wydaje się to bardzo mało prawdopodobne. –

+0

Tak. To nie zadziałało. Pobrałem pliki z Dropbox. Przegrałem już ponad 2 godziny. –

Powiązane problemy