- 目錄
- 簡(jiǎn)介
- 效果圖
-
github
地址 - 源碼
- 使用說(shuō)明
- 致謝
平時(shí)會(huì)把一些相關(guān)的資源放在一個(gè)文件夾內(nèi)夫壁,日積月累,文件越來(lái)越多
隨便放了一些文件來(lái)演示
而像我這種有強(qiáng)迫癥的人吨些,喜歡把文件前面添加序號(hào)屏轰,這樣看著會(huì)很舒服~
之前都是一個(gè)個(gè)的手改,后來(lái)感覺(jué)有點(diǎn)累(果然懶使人進(jìn)步??????)~
于是碼了個(gè)shell
腳本昂灵,初步實(shí)現(xiàn)了功能(macOS
環(huán)境)实蓬,但是目前(2018.05.31
)只能依賴于系統(tǒng)的排序來(lái)添加前綴缀踪,還不能憑借個(gè)人喜歡,進(jìn)行上浮或者下沉~
入門級(jí)選手 ~
還請(qǐng)大佬帶飛 ~
還請(qǐng)大佬帶飛 ~
還請(qǐng)大佬帶飛 ~
效果圖??
代碼在:世界上最大的交友網(wǎng)站 ---> github
源碼也可以看這里
#!/bin/bash
function ff_cp() {
file_path=$1
copy_path=${file_path}"/ff_renamed/"
if ! [ -d $copy_path ]
then
echo "目標(biāo)文件夾不存在"
echo "創(chuàng)建目標(biāo)文件夾..."
mkdir $copy_path
echo "創(chuàng)建目標(biāo)文件夾成功 $copy_path"
else
echo "目標(biāo)文件夾已存在"
fi
for (( i = 0; i < ${#files_arr[@]}; i++ )); do
filename=${files_arr[$i]}
true_filename=(`echo $filename | sed 's/-/[[:space:]]/g'`)
tmp_path=$file_path"/"$true_filename
tmp_i=`expr $i + 1`
prefix_str=`get_prefix ${#tmp_i}`
new_path=$copy_path$prefix_str$tmp_i"_"$true_filename
cp "$tmp_path" "$new_path"
done
}
function ff_mv() {
file_path=$1
for (( i = 0; i < ${#files_arr[@]}; i++ )); do
filename=${files_arr[$i]}
true_filename=(`echo $filename | sed 's/-/[[:space:]]/g'`)
tmp_path=$file_path"/"$true_filename
tmp_i=`expr $i + 1`
prefix_str=`get_prefix ${#tmp_i}`
new_path=$file_path"/"$prefix_str$tmp_i"_"$true_filename
mv "$tmp_path" "$new_path"
done
}
function get_prefix () {
tmp_length=$1
case $tmp_length in
1) prefix_str='0'
;;
*) prefix_str='';
;;
esac
echo $prefix_str
}
# -----
file_path=$1
if [ ${#file_path} -eq 0 ]
then
echo "非法路徑"
exit
fi
if [ -d $file_path ]
then
cd $file_path
echo "需要操作的文件夾為: $file_path"
else
echo "路徑不存在"
exit
fi
tmp_files_arr=(`ls $file_path | sed 's/[[:space:]]/-/g'`)
tmp_num=${#tmp_files_arr[@]}
echo "路徑內(nèi)-內(nèi)容數(shù)量(包含文件和文件夾):$tmp_num"
for filename in ${tmp_files_arr[@]};do
if ! [ -d $filename ]
then
files_arr+=($filename)
fi
done
files_num=${#files_arr[@]}
echo "路徑內(nèi)-文件數(shù)量:$files_num"
if [ $files_num -eq 0 ]
then
echo "the dir is empty"
exit
fi
f_length=${#files_num}
action=$2
if [ "$action" = "mv" ]
then
ff_mv $file_path
elif [ "$action" = "cp" ]
then
ff_cp $file_path
elif [ ${#action} -eq 0 ]
then
ff_cp $file_path
else
echo '參數(shù)2只能為 mv 或 cp 或 空(默認(rèn)為cp)'
exit
fi
echo "操作完成 bye ~"
可以從github下載灭返,或者將??的源碼copy
到一個(gè)新建的***.sh
文件
- 這個(gè)腳本只會(huì)操作文件
- 沒(méi)有實(shí)現(xiàn)遞歸(覺(jué)得也沒(méi)必要遞歸)
- 亂七八糟的名字沒(méi)做容錯(cuò)
- 使用的時(shí)候邮弹,第一個(gè)參數(shù)是需要操作的文件夾路徑腌乡,第二個(gè)參數(shù)可以傳
cp
mv
或 不傳(不傳時(shí)默認(rèn)為cp
)- 參數(shù)2為
cp
時(shí)急迂,會(huì)創(chuàng)建一個(gè)新的文件夾裂七,名為ff_renamed
毛雇,可以自行修改羡棵,但是要確保當(dāng)前文件夾中沒(méi)有重名,然后會(huì)復(fù)制目標(biāo)文件并重命名到ff_renamed
中 - 參數(shù)2為
mv
時(shí)灼擂,會(huì)直接改動(dòng)目標(biāo)文件
- 參數(shù)2為
- 數(shù)據(jù)無(wú)價(jià)觉至,盡量使用cp剔应,確認(rèn)無(wú)誤后手動(dòng)刪除舊文件
- 數(shù)據(jù)無(wú)價(jià)语御,盡量使用cp,確認(rèn)無(wú)誤后手動(dòng)刪除舊文件
- 數(shù)據(jù)無(wú)價(jià)应闯,盡量使用cp,確認(rèn)無(wú)誤后手動(dòng)刪除舊文件
ff:~ fengfeng$ sh filenameHandle.sh /Users/fengfeng/Desktop/tmp
需要操作的文件夾為: /Users/fengfeng/Desktop/tmp
路徑內(nèi)-內(nèi)容數(shù)量(包含文件和文件夾):6
路徑內(nèi)-文件數(shù)量:6
目標(biāo)文件夾不存在
創(chuàng)建目標(biāo)文件夾...
創(chuàng)建目標(biāo)文件夾成功 /Users/fengfeng/Desktop/tmp/ff_renamed/
操作完成 bye ~
ff:~ fengfeng$
最終效果??
講真船万,目前也只是能用,還有許多待優(yōu)化的地方(比如 指定排序耿导、容錯(cuò)也只處理了文件名中有空格的情況、前綴只能是數(shù)字 ...)舱呻,有時(shí)間再弄優(yōu)化 ~
終于不用再一個(gè)個(gè)的改名字了 ~
(??????)?? ~
不定期更新 不合適的地方 還請(qǐng)指點(diǎn)~ 感激不盡