引言
在我們之前的文章里,我們已經講過怎么去數一個目錄里文件和子目錄的總數。這篇指南會教你在 Linux 系統里,把所有文件和目錄的名字改成小寫字母。
做到這件事有好幾種方法,我們會介紹其中兩種最有效、最靠譜的辦法。為了方便說明,我們用了一個叫 Files 的目錄,它的結構是這樣的:
# find Files -depth
1. 結合 find、xargs 和 rename 命令使用
rename 是一個簡單好用的命令行工具,能在 Linux 上一次改名多個文件。你可以把它和 find 工具搭配起來,用下面的方法,把某個目錄里所有的文件或子目錄的名字改成小寫:
$ find Files -depth | xargs -n 1 rename -v 's/(.*)\/([^\/]*)/\\/\L$2/' {} \;
上面命令里用到的選項解釋:
- -depth – 先顯示目錄里的內容,再顯示目錄本身。
- -n 1 – 告訴 xargs 從 find 的輸出中,每次命令只處理一個參數。
在 Files 目錄里把文件和子目錄的名字改成小寫后的示例輸出。
還有一種替代方法,用 find 和 mv 命令寫個腳本就能搞定,具體如下。
2. 用 Shell 腳本結合 find 和 mv 命令
首先得寫一個腳本:
$ 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
總結
這篇指南里,教了你怎么在 Linux 里把所有文件和目錄的名字改成小寫。
動動您發財的小手點個贊吧!歡迎轉發!
本文由mdnice多平臺發布