Zmień nazwy wszystkich plików i katalogów na małe litery w systemie Linux
W poprzednim artykule opisaliśmy, jak policzyć liczbę plików i podkatalogów w danym katalogu. Ten przewodnik pokaże Ci, jak zmienić nazwy wszystkich plików i katalogów na małe litery w systemie Linux.
Przeczytaj także: Jak znaleźć najważniejsze katalogi i pliki (miejsce na dysku) w systemie Linux
Można to osiągnąć na kilka sposobów, ale wyjaśnimy dwie z najbardziej wydajnych i niezawodnych metod. Na potrzeby tego przewodnika użyliśmy katalogu o nazwie Files
, który ma następującą strukturę:
find Files -depth
1. Używając funkcji find, xargs i zmień nazwę poleceń razem
rename to proste narzędzie wiersza poleceń umożliwiające zmianę nazwy kilku plików jednocześnie w systemie Linux. Możesz go użyć razem z narzędziem find, aby zmienić nazwy wszystkich plików lub podkatalogów w określonym katalogu na małe litery w następujący sposób:
find Files -depth | xargs -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;
Objaśnienie opcji użytych w powyższym poleceniu.
-głębia
– wyświetla zawartość każdego katalogu przed samym katalogiem.-n 1
– instruuje xargs, aby użył co najwyżej jednego argumentu na linię poleceń z wyjścia find.
Przykładowe wyjście po zmianie nazw plików i podkatalogów na małe litery w katalogu Files
.
Inny alternatywny sposób użycia poleceń find i mv w skrypcie, jak wyjaśniono poniżej.
2. Używanie poleceń find i mv w skrypcie powłoki
Najpierw utwórz swój skrypt (możesz nadać mu dowolną nazwę):
cd ~/bin
vi rename-files.sh
Następnie dodaj w nim poniższy kod.
#!/bin/bash
#print usage
if [ -z $1 ];then
echo "Usage :$(basename $0) parent-directory"
exit 1
fi
#process all subdirectories and files in parent directory
all="$(find $1 -depth)"
for name in ${all}; do
#set new name in lower case for files and directories
new_name="$(dirname "${name}")/$(basename "${name}" | tr '[A-Z]' '[a-z]')"
#check if new name already exists
if [ "${name}" != "${new_name}" ]; then
[ ! -e "${new_name}" ] && mv -T "${name}" "${new_name}"; echo "${name} was renamed to ${new_name}" || echo "${name} wasn't renamed!"
fi
done
echo
echo
#list directories and file new names in lowercase
echo "Directories and files with new names in lowercase letters"
find $(echo $1 | tr 'A-Z' 'a-z') -depth
exit 0
Zapisz i zamknij plik, następnie uczyń skrypt wykonywalnym i uruchom go:
chmod +x rename-files.sh
rename-files.sh Files #Specify Directory Name
Możesz także przeczytać następujące powiązane artykuły.
- Wyjaśnienie „Wszystko jest plikiem” i typów plików w systemie Linux
- fswatch – monitoruje zmiany lub modyfikacje plików i katalogów w systemie Linux
- Fasd – narzędzie wiersza poleceń oferujące szybki dostęp do plików i katalogów
- FSlint – jak znaleźć i usunąć zduplikowane pliki w systemie Linux
W tym przewodniku wyjaśniliśmy, jak zmienić nazwy wszystkich plików i katalogów na małe litery w systemie Linux. Jeśli pojawią się jakieś błędy, skontaktuj się z nami za pomocą poniższego formularza opinii. Możesz również zaoferować nam inne metody zrobienia tego samego.