Zoeken op website

Hernoem alle bestanden en mapnamen naar kleine letters in Linux


In ons vorige artikel hebben we beschreven hoe u het aantal bestanden en submappen in een bepaalde map kunt tellen. Deze handleiding laat je zien hoe je alle bestanden en mapnamen kunt hernoemen naar kleine letters in Linux.

Lees ook: hoe u de belangrijkste mappen en bestanden (schijfruimte) in Linux kunt achterhalen

Er zijn verschillende manieren om dit te bereiken, maar we zullen twee van de meest efficiënte en betrouwbare methoden uitleggen. Voor het doel van deze handleiding hebben we een map met de naam Bestanden gebruikt, die de volgende structuur heeft:

find Files -depth

1. Gebruik find, xargs en hernoem Commands Together

rename is een eenvoudig opdrachtregelhulpprogramma voor het hernoemen van meerdere bestanden tegelijk in Linux. Je kunt het samen met het zoekprogramma gebruiken om alle bestanden of submappen in een bepaalde map als volgt te hernoemen naar kleine letters:

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

Uitleg van de opties die in de bovenstaande opdracht worden gebruikt.

  • -diepte – geeft de inhoud van elke map weer vóór de map zelf.
  • -n 1 – instrueert xargs om maximaal één argument per opdrachtregel uit de uitvoer van find te gebruiken.

Voorbeelduitvoer na het hernoemen van bestanden en submappen naar kleine letters in de map Files.

Een andere alternatieve manier om de opdrachten find en mv in een script te gebruiken, zoals hieronder uitgelegd.

2. Find- en mv-opdrachten gebruiken in Shell-script

Maak eerst uw script (u kunt het een naam geven die u maar wilt):

cd ~/bin
vi rename-files.sh

Voeg vervolgens onderstaande code daarin toe.

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

Sla het bestand op en sluit het, maak het script vervolgens uitvoerbaar en voer het uit:

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

Misschien vindt u het ook leuk om de volgende gerelateerde artikelen te lezen.

  1. Uitleg van "Alles is een bestand" en soorten bestanden in Linux
  2. fswatch – Bewaakt bestanden en mapwijzigingen of -aanpassingen in Linux
  3. Fasd – Een opdrachtregelprogramma dat snelle toegang biedt tot bestanden en mappen
  4. FSlint - Hoe dubbele bestanden in Linux te vinden en te verwijderen

In deze handleiding hebben we uitgelegd hoe u alle bestanden en mappen in Linux kunt hernoemen naar kleine letters. Als u fouten tegenkomt, neem dan contact met ons op via het onderstaande feedbackformulier. U kunt ons ook andere methoden aanbieden om hetzelfde te doen.