使用命名约定组织不同的文件

  • 本文关键字:文件 命名约定 bash shell
  • 更新时间 :
  • 英文 :


我刚刚完成了一堂关于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

最新更新