Zmienianie nazw wielu plików przez dodanie ciągu na początku

21

Dla około 200 plików w katalogu chciałbym dodać ciąg 1_na początku wszystkich nazw plików.

Nazwy plików są na przykład DATASET_X_Y_Zi wynik powinien być 1_DATASET_X_Y_Z.

Nie wiem nic na temat skryptów Shell, ale może jest jedna linijka dla terminala.

macydanim
źródło
Link @Rinzwind dotyczy innego pytania. Pytanie Macydanim dotyczy przygotowania ciągów znaków do nazw plików, a nie do zawartości pliku.
jc

Odpowiedzi:

38
  • rename 's/^/1_/' * do zmiany nazwy wszystkich plików w bieżącym katalogu

lub

  • rename 's/^/1_/' DATASET*do zmiany nazwy wszystkich plików w bieżącym katalogu, zaczynając od DATASETich nazwy

Objaśnienie: wyrażenie s/^/1_/mówi: „zamień początek nazwy pliku (to znaczy ten symbol -> ^)” na 1_„.

dAnjou
źródło
Jeśli renamenie zrobisz tego po wyjęciu z pudełka, musisz zainstalować prename(zmiana nazwy PERL).
user1359,
14

Możesz łatwo zmienić nazwę wszystkich plików w bieżącym typowaniu katalogów (zakładając, że używasz bash):

for i in *; do mv "$i" 1_"$i"; done

oczywiście ostrożnie; usunie WSZYSTKIE pliki w bieżącym katalogu, które są „widoczne” (nazwa pliku nie zaczyna się od „.”)

karlacio
źródło
Jest to pierwsze poprawne rozwiązanie, które znalazłem, którego można użyć do dodania czegoś podobnego .csvdo podzbioru plików, ze zmienionym wyrażeniem wieloznacznym zamiast *. +1
Zelphir Kaltstahl
Łał! Pętle w interfejsie CLI! To jest nowe. :)
Raymond Wachaga
9

Możesz użyć pyRenamer . Można go znaleźć w centrum oprogramowania Ubuntu. wprowadź opis zdjęcia tutaj Pierwotny wzorzec pliku powinien mieć postać {X}, a wzorzec nazwy pliku powinien mieć nazwę 1_ {1}

nickguletskii
źródło
Jeden z moich ulubionych programów
Allan