लिनक्स में लोअरकेस में सभी फाइलों और निर्देशिका नामों का नाम बदलें


हमारे पिछले लेख में, हमने एक निर्देशिका के अंदर फ़ाइलों और उपनिर्देशिकाओं की संख्या की गणना करने का वर्णन किया है। यह गाइड आपको दिखाएगा कि लिनक्स में लोअरकेस में सभी फाइलों और निर्देशिका नामों का नाम कैसे बदला जाए।

इसे प्राप्त करने के कई तरीके हैं, लेकिन हम दो सबसे कुशल और विश्वसनीय तरीके बताते हैं। इस गाइड के उद्देश्य के लिए, हमने files नामक एक निर्देशिका का उपयोग किया है, जिसमें निम्न संरचना है:

# find Files -depth

1. खोज, xargs और नाम का एक साथ नाम का उपयोग करना

लिनक्स में एक साथ कई फ़ाइलों का नाम बदलने के लिए नाम बदलना एक सरल कमांड लाइन उपयोगिता है। आप एक साथ एक विशेष निर्देशिका में सभी फ़ाइलों या उपनिर्देशिकाओं का नाम बदलने के लिए उपयोगिता खोजने के लिए इसे एक साथ उपयोग कर सकते हैं:

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

उपरोक्त आदेश में उपयोग किए गए विकल्पों का स्पष्टीकरण।

  • -depth – lists each directory’s contents before the directory itself.
  • -n 1 – instructs xargs to use at most one argument per command line from find output.

फ़ाइलें निर्देशिका में लोअरकेस में फ़ाइलों और उपनिर्देशिकाओं का नाम बदलने के बाद नमूना आउटपुट।

नीचे दिए गए विवरण के अनुसार स्क्रिप्ट में mv और mv कमांड का उपयोग करने का एक और वैकल्पिक तरीका है।

2. शेल स्क्रिप्ट में खोज और एमवी कमांड का उपयोग करना

पहले अपनी स्क्रिप्ट बनाएं (आप इसे अपनी पसंद की किसी भी चीज़ का नाम दे सकते हैं):

$ cd ~/bin
$ vi rename-files.sh

फिर इसमें नीचे दिए गए कोड को जोड़ें।

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

फ़ाइल को सहेजें और बंद करें, फिर स्क्रिप्ट को निष्पादन योग्य बनाएं और उसे चलाएं:

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

आप इन निम्नलिखित संबंधित लेखों को पढ़ना पसंद कर सकते हैं।

  1. Explanation of “Everything is a File” and Types of Files in Linux
  2. fswatch – Monitors Files and Directory Changes or Modifications in Linux
  3. Fasd – A Commandline Tool That Offers Quick Access to Files and Directories
  4. FSlint – How to Find and Remove Duplicate Files in Linux

इस गाइड में, हमने आपको लिनक्स में लोअरकेस में सभी फाइलों और निर्देशिकाओं का नाम बदलने का तरीका बताया। यदि कोई त्रुटि मिलती है, तो कृपया नीचे दिए गए फ़ीडबैक फ़ॉर्म के माध्यम से हमें हिट करें। आप हमें ऐसा करने के अन्य तरीकों की भी पेशकश कर सकते हैं।