Jak zmienić nazwę plików w katalogu, takim jak następujący plik PMC21375.pdf.txt
:, muszę zmienić nazwę na 21375.txt
. tzn. muszę usunąć jedno PMC
i drugie pdf
z każdej nazwy pliku.
10
rename 's/(PMC|\.pdf)//g' *pdf.txt
Próbny :
$ ls *txt
PMC21375.pdf.txt
$ rename -n 's/(PMC|\.pdf)//g' *txt
PMC21375.pdf.txt -> 21375.txt
z shell
monitu. Jest to bardzo przydatne, możesz wstawić trochę kodu perla, tak jak ja, w podstawieniu.
Możesz usunąć -n
(przełącznik trybu pracy na sucho), gdy testy staną się ważne.
Istnieją inne narzędzia o tej samej nazwie, które mogą lub nie mogą tego zrobić, więc bądź ostrożny.
Jeśli uruchomisz następujące polecenie ( linux
)
$ file $(readlink -f $(type -p rename))
i masz wynik jak
.../rename: Perl script, ASCII text executable
to wydaje się być właściwym narzędziem =)
Jeśli nie, aby ustawić ją jako domyślną (zwykle już tak jest) Debian
i pochodną taką jak Ubuntu
:
$ sudo update-alternatives --set rename /path/to/rename
(zamień /path/to/rename
na ścieżkę twojego perl's rename
polecenia.
Last but not least, to narzędzie zostało pierwotnie napisane przez Larry'ego Walla, ojca Perla.
.pdf
nazwy pliku.Oprócz polecenia zmiany nazwy możesz to zrobić bezpośrednio w bash (tylko jeden sposób z wielu):
Edytowane, aby pokazać Pinyaka, jak to działa:
źródło
.pdf
z nazwy pliku.Istnieje kilka narzędzi do zmiany nazw plików, ale jednym z najłatwiejszych w użyciu jest
rename
. W twoim przypadku prawdopodobnie możesz zrobić:Pierwszy parametr to część nazwy pliku do zastąpienia. Drugi parametr to ciąg zastępujący. Tutaj używam
''
do reprezentowania pustego ciągu. Wszystkie poniższe parametry to pliki do zmiany nazwy, tutaj*txt
ograniczyłem zastępowanie do plików tekstowych.rename
powinien już być obecny, jeśli używasz Linuksa. Jeśli używasz * BSD lub OS X, być może będziesz musiał go najpierw zainstalować.źródło
rename
. Jest jeden zutil-linux
i jedenperl
z inną składnią. Ten, do którego się odnosisz, wygląda tak, jak ten zutil-linux
tego, który jest czasami wywoływany,rename.ul
aby nie mylić gorename
zperl
, podczas gdy w niektórych innych systemach,rename
to ten z util-linux i ten zperl
jest nazywanyprename
.rename 's/PMC// *.txt
rename s/\.pdf// *.txt
Najpierw wykonaj kopię zapasową plików! Zasadniczo możesz użyć jedno-liniowego python w bieżącym katalogu w ogólnej formie:
w twoim konkretnym przypadku możesz użyć tego dwukrotnie:
usunąć
.pdf
i ponownie:do usunięcia
PMC
.źródło
Spróbuj tego:
for i in *.pdf.txt; do j=${i//\.pdf/}; j=${j//PMC/}; mv $i $j; done
Te
j=${i//\.pdf/}
środki, aby zastąpić.pdf
w$i
nic. Podobnie z drugim zadaniem j pozbywającym się PMC.źródło
Jeśli używasz
zsh
, jest to typowa praca dlazmv
:(z
zmv
wdziękiem radzi sobie z potencjalnymi konfliktami).źródło