我刚刚完成了一堂关于linux cli的简短课程,我正在尝试使用cli作为一种组织&整理目录中的文件。
这些文件的格式各不相同(.png、.jpg、.mp4、.txt…(,其长字符串名称甚至与文件无关。
我的目标是用一个通用名称&根据他们的订单数量附上一个数字。(同时保持扩展类型不变(
示例:
blablah1234_4312.txt,randompic-2022-14-15.jpg,logo_355234234.png,slowmovideo_20-31-06.mp4
重命名为:
droneProject_1.txt、droneProject_2.jpg、droneProject_3.png、droneject_4.mp4
我将在其他目录上执行相同的过程,因此我认为我需要制作一个bash脚本,将所需的公共名称作为$1,将所选目录用作$2。
我知道该告诉脚本做什么,但我不知道如何正确编码,到目前为止,这是我的尝试;(我认为这是伪代码(
for file in $2
do
orderCount=1
mv $singleFile $1_$orderCount.keepExtensionType
orderCount=+1
done
我似乎不知道自己在做什么,但对我来说,伪代码是有意义的。。。帮助
诀窍是${f##*.}
提取文件扩展名。其余的都很简单。
#!/bin/bash
count=1
for f in $2/* ; do
EXT=${f##*.}
mv $f $1_${count}.${EXT}
count=$(( $count + 1 ))
done
我会这样做:
#!/bin/bash
prefix=$1
dir=$2
cd "$dir" || exit
n=0
for file in *.*; do
[[ -f $file ]] || continue
printf -v dest '%s_%d.%s' "$prefix" $((++n)) "${file##*.}"
mv -i "$file" "$dest"
done