Vyhledávání na webu

Přejmenujte všechny názvy souborů a adresářů na malá písmena v Linuxu


V našem předchozím článku jsme popsali, jak spočítat počet souborů a podadresářů uvnitř daného adresáře. Tato příručka vám ukáže, jak v Linuxu přejmenovat všechny názvy souborů a adresářů na malá písmena.

Přečtěte si také: Jak zjistit nejlepší adresáře a soubory (místo na disku) v systému Linux

Existuje několik způsobů, jak toho dosáhnout, ale vysvětlíme dva z nejúčinnějších a nejspolehlivějších způsobů. Pro účely této příručky jsme použili adresář s názvem Files, který má následující strukturu:

find Files -depth

1. Pomocí příkazů find, xargs a přejmenování společně

rename je jednoduchý nástroj příkazového řádku pro přejmenování několika souborů najednou v Linuxu. Můžete jej použít společně s nástrojem find k přejmenování všech souborů nebo podadresářů v konkrétním adresáři na malá písmena následovně:

find Files -depth | xargs -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;

Vysvětlení možností použitých ve výše uvedeném příkazu.

  • -depth – uvádí obsah každého adresáře před samotným adresářem.
  • -n 1 – přikazuje xargs použít maximálně jeden argument na příkazový řádek z výstupu find.

Ukázkový výstup po přejmenování souborů a podadresářů na malá písmena v adresáři Files.

Další alternativní způsob použití příkazů find a mv ve skriptu, jak je vysvětleno níže.

2. Použití příkazů find a mv ve skriptu Shell

Nejprve vytvořte skript (můžete jej pojmenovat jakkoli chcete):

cd ~/bin
vi rename-files.sh

Poté do něj přidejte níže uvedený kód.

#!/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

Uložte a zavřete soubor, poté vytvořte spustitelný skript a spusťte jej:

chmod +x rename-files.sh
rename-files.sh Files     #Specify Directory Name

Možná si také rádi přečtete následující související články.

  1. Vysvětlení „Všechno je soubor“ a Typy souborů v Linuxu
  2. fswatch – Monitoruje změny nebo úpravy souborů a adresářů v Linuxu
  3. Fasd – nástroj příkazového řádku, který nabízí rychlý přístup k souborům a adresářům
  4. FSlint – Jak najít a odstranit duplicitní soubory v Linuxu

V této příručce jsme vám vysvětlili, jak v Linuxu přejmenovat všechny soubory a adresáře na malá písmena. Pokud se objeví nějaké chyby, kontaktujte nás prostřednictvím formuláře pro zpětnou vazbu níže. Můžete nám také nabídnout jakékoli jiné způsoby, jak udělat totéž.