Wyszukiwanie w witrynie

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.

  1. Wyjaśnienie „Wszystko jest plikiem” i typów plików w systemie Linux
  2. fswatch – monitoruje zmiany lub modyfikacje plików i katalogów w systemie Linux
  3. Fasd – narzędzie wiersza poleceń oferujące szybki dostęp do plików i katalogów
  4. 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.