gpt4 book ai didi

regex - 用于重命名多个文件的父文件夹的 Shell 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 04:02:05 26 4
gpt4 key购买 nike

我正在寻找以下结构的脚本:

之前:

/Description/TestCVin/OpenCVin/NameCv/.....
/Description/blacVin/baka/NameCv_hubala/......
/Description/CVintere/oldCvimg/NameCv_add/.....

之后:

/Description/TestaplCVin/OpenaplCVin/NameaplCv/.....
/Description/blaapcVlin/baka/NameaplCv_hubala/......
/Description/aplCVintere/oldaplCvimg/NameaplCv_add/.....

我想通过正则表达式重命名所有文件夹中的“Cv 或 CV 或 cV ” >>“aplCv 或 aplCV 或 aplcV”...

我的脚本确实看起来像:

#!/bin/sh

printf "Input your Directory path: -> "

read DIR

cd "$DIR"

FILECASE=$(find . -iname "*cv*")

LAST_DIR_NAME=""

for fdir in $FILECASE
do
if [[ -d $fdir ]];
then
LAST_DIR_NAME=$fdir

fi

FILE=$(echo $fdir | sed -e "s/\([Cc][Vv]\)/arpl\1/g")
echo "la file $FILE"
if ([[ -f $fdir ]] && [[ "$fdir" =~ "$LAST_DIR_NAME" ]]);
then
FILECASE=$(find . -iname "*cv*")

tmp=$(echo $LAST_DIR_NAME | sed -e "s/\([Cc][Vv]\)/arpl\1/g")
fdir=$(echo $fdir | sed -e 's|'$LAST_DIR_NAME'|'$tmp'|g')
fi

mv -- "$fdir" "$FILE"
done

但是它抛出一个错误..:(

我怎样才能编写它来根据文件的文件夹名称重命名文件?

最佳答案

你可以这样做

#!/bin/sh

printf "Input your Directory path: -> "
read DIR
cd "$DIR"
MYARRAY=$(find . -iname "*cv*" )

touch "tmpfile"

for fdir in $MYARRAY
do
echo "$fdir" >> "tmpfile"
done

MYARRAY=$(tac "tmpfile")

for fdir in $MYARRAY
do
cd "$fdir"
prev=$(cd -)
base=$(basename $fdir)
cd ..
nDIR=$(echo "$base" | sed -e "s/\([Cc][Vv]\)/arpl\1/g")
mv "$base" "$nDIR"
cd $prev
done

rm -f "tmpfile"

还有一个问题,我认为 Mac OS X 中未包含 tac 命令。相反,tac 使用 tail -r,如 MYARRAY=$(tail -r "tmpfile")

关于regex - 用于重命名多个文件的父文件夹的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22604828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com