BASH:根据文件名中的信息重命名和组织文件

BASH:根据文件名中的信息重命名和组织文件

假设我有一堆文件,其信​​息用下划线分隔:

昵称_用户名_真实姓名_日期_文件名.txt

我想为每个用户名创建一个目录并重命名该文件以摆脱nickname_username_date_并将该文件(现在名为name.txt)移动到它的用户名目录中

for f in *txt
         sed -F_'{$nick $user $realname $date $filename} $f
         $(mkdir -p $user)
         $(rename 's/???/$filename/g' $fullFileName)
         $(mv $fullFileName $user)

答案1

如果我理解正确的话,这是我的尝试:

for i in *.txt; do
  IFS='_' read -r -a array <<< "$i"
  mkdir -p "${array[1]}" && mv "$i" "${array[1]}"/"${array[4]}"
done

创建一个数组_作为分隔符

IFS='_' read -r -a array <<< "$i"

使用用户名创建目录"${array[1]}"并将文件名移动"${array[4]}"到该目录。

mkdir -p "${array[1]}" && mv "$i" "${array[1]}"/"${array[4]}"

谨慎使用

相关内容