我正在编写一个脚本,我在迭代文件夹并重命名文件而不更改给定路径的扩展名。我正在使用find -for example
获取文件的路径ABC / XYZ / qwe.txt
现在我接受用户的文件名,并希望重命名该文件,如
ABC / XYZ / myfile.txt的
可以解决这个问题。如何重命名文件?我试过下面的代码
find "$input_variable" -type f -name $word.* | while read file; do mv $file | sed "s/$word/$replace/"; done;;
更新 试试这个
echo "Please Insert the path of the folder"
read input_variable
read -p "Enter the word to find = " word
read -p "Enter word to replace = " replace
find "$input_variable" -type f -name "$word.*" | while read file;
do
echo "$file"
s="$file"
d="`dirname $s`"
f="`basename $s`"
nf=$(echo $f | sed "s/^[^.]*\./$word./")
newFileName="$d/$nf"
done
答案 0 :(得分:1)
这可能是一种方式:
find "$input_variable" -type f -name "$word.*" | while read file; do
dir=${file%/*}
base=${file##*/}
ext=${base##*.}
noext=${base:0:${#base} - ${#ext} - 1}
newname=${noext/"$word"/"$replace"}.$ext
echo mv "$file" "$dir/$newname"
done
当您确定它已经正确时,删除回声部分。
编辑:
find "$input_variable" -type f -name "$word.*" | while read file; do
dir=${file%/*}
base=${file##*/}
noext=${base%.*}
ext=${base:${#noext}}
newname=${noext/"$word"/"$replace"}$ext
echo mv "$file" "$dir/$newname"
done
答案 1 :(得分:0)