Mam wiele plików o nazwach takich jak that : screenshot 13:25.png
Windows, które próbują otworzyć te pliki prawdopodobnie z powodu „:”.
Jak mogę go wymienić?
Mam wiele plików o nazwach takich jak that : screenshot 13:25.png
Windows, które próbują otworzyć te pliki prawdopodobnie z powodu „:”.
Jak mogę go wymienić?
Odpowiedzi:
W terminalu, cdwe właściwym katalogu, a następnie uruchom go.
rename 's/\:/-/g' *.png -vn
Spowoduje to wyświetlenie podglądu zmiany nazwy. Należy wymienić :z -.
Jeśli to wygląda poprawnie, usuń nz końca, a następnie dokona faktycznej zmiany nazwy.
Uwaga : wersje Ubuntu powyżej 17.04 nie są dostarczane rename, ale nadal są dostępne w domyślnych repozytoriach, więc użyj, sudo apt install renameaby je uzyskać
nłatwo usunąć (lub ).
rename 's/\:/-/g; s/%28/ /g; s/%29//g' ...
Oto czyste rozwiązanie bash:
for i in *:*; do
mv "$i" "${i//:/_}"
done
${var//pattern/replacement}Format będzie zastąpić wszystkie wystąpienia patternze replacementw zmiennej $var. Aby uzyskać więcej informacji na temat możliwości manipulacji ciągiem bash, zobacz tutaj .
Jeśli chcesz to zrobić dla wielu postaci, możesz po prostu umieścić je w klasie postaci. Tak więc, na przykład, aby wymienić wszystkie ;, :, =, +, %, ,podkreślenia, można zrobić:
$ ls
1foo:bar 2foo:bar:baz 3foo;bar 4foo=bar 5foo%bar 6foo,bar 7foo+bar
$ for i in *; do mv "$i" "${i//[:;=%,+]/_}"; done
$ ls
1foo_bar 2foo_bar_baz 3foo_bar 4foo_bar 5foo_bar 6foo_bar 7foo_bar
Zasadniczo chodzi o to, że [ ]to oznacza any of the characters listed. Umieszczając wszystkie postacie, które chcesz zastąpić, w klasie postaci, wszystkie są rozpatrywane jednocześnie.
W przypadku konkretnych znaków, o które prosiłeś, sprawy są nieco bardziej skomplikowane, ponieważ niektóre z nich muszą być poprzedzone znakami ucieczki (ignoruję to, /ponieważ * nix nie zezwala na to w nazwach plików bardziej niż system Windows, więc nie będzie to kwestia):
$ ls
1foo<bar 2foo>bar 3foo:bar 4foo\bar 5foo|bar 6foo*bar 7foo?bar 8foo"bar 9foo'bar
$ for i in *; do mv "$i" "${i//[<>:\\|*\'\"?]/_}"; done
$ ls
1foo_bar 2foo_bar 3foo_bar 4foo_bar 5foo_bar 6foo_bar 7foo_bar 8foo_bar 9foo_bar
Zauważ, że uciekł \, 'a "przez dodanie \przed siebie.
Jeśli wolisz GUI, zainstaluj pyrenamer:
sudo apt-get install pyrenamer
Następnie uruchom:
pyrenamer
Posiada dziesiątki opcji wzorów i formatów nazw.
Wolę GUI, ale jako rozszerzenie Nautilus, tj. Nautilus Actions Extra :
sudo add-apt-repository ppa:nae-team/ppa
sudo apt-get update
sudo apt-get install nautilus-actions-extra
nautilus -q
(Zobacz www.webupd8.org/2011/12/nautilus-actions-extra-pack-of-useful.html )
Następnie, gdy wybierzesz pliki do zmiany nazwy i klikniesz Zmień nazwę z menu kontekstowego, pojawi się wiele opcji zmiany nazw plików.
renameutilsOpakowanie posiada wygodny program o nazwie qmv, która zapewnia interaktywny zmiana nazwy partii. Uruchamiasz go w katalogu lub na liście plików, a on generuje tymczasowy plik tekstowy zawierający ich nazwy plików i uruchamia twój ulubiony edytor. Po wyjściu z edytora wszystkie nazwy plików, które zmieniłeś, są odpowiednio zmieniane. qmvzamienia problem zmiany nazwy partii na problem edycji tekstu.
W takim przypadku możesz użyć qmv -f do *:*do edycji nazw wszystkich plików zawierających dwukropek, a następnie :%s/:/_/gpolecenia w Vimie (lub odpowiedniego wyszukiwania i zamień w dowolnym używanym edytorze).
Te -f dozestawy opcji format pliku tekstowego, aby mieć tylko nazwy pliku docelowego, co sprawia, że wyszukiwanie i zamień prostsze. Domyślny format ma dwie kopie nazwy pliku w każdym wierszu, a ty edytujesz tylko drugi. To pozwala zrobić to dobrze, jeśli usunąłeś lub zmieniłeś kolejność wierszy w pliku, ale nie zawsze jest to najłatwiejsze. Istnieją również inne formaty.
Za pomocą qmvmożesz zamiast tego potokować wygenerowany plik za pomocą wybranego polecenia, na przykład sed, jeśli nie chcesz funkcji interaktywnej.
A oto Skrypt Nautilusa, który zastępuje (wszystkie?) Znaki niekompatybilne z Windows myślnikiem we wszystkich wybranych nazwach plików (na podstawie odpowiedzi terdona ;-)
#!/bin/bash
filesall=""
while [ $# -gt 0 ]
do
files=`echo "$1" | sed 's/ /\?/g'`
filesall="$files $filesall"
shift
done
for i in $filesall; do mv "$i" "${i//[<>:\\|*\'\"?]/-}"; done
Thunar (menedżer plików XFCE) ma przyjemną wbudowaną funkcję do masowej zmiany nazw plików. Posiada opcje usuwania / zamiany znaków, wyszukiwania i zamiany, numerowania plików i wiele innych.
Zainstaluj Thunar:
sudo apt-get install thunar
Otwórz Thunar, przejdź do swoich plików, zaznacz je i wybierz „zmień nazwę” (za pomocą menu kontekstowego lub F2)
@echo off
echo.
echo. How many Characters Do You Want To Remove
echo.
echo. From The End Of The FileName ?
echo.
echo.
set /p variable=" > "
setlocal enabledelayedexpansion
for /f "delims=" %%a in (' dir /b /a-d *.mp3') do (
set oldName=%%a
Set newName=!oldName:~0,-%variable%!.mp3
Ren "!oldName!" "!newName!"
)
exit