按名称将文件分成不同的文件夹

按名称将文件分成不同的文件夹

如果我有一个文件夹,其中包含具有相同模式的各种文件,例如:

 file1a
 file1b
 file1c
 file2a
 file2b
 file2c
 ...

是否有一行代码可以将它们分成名为的文件夹:

file1/file1a, file1b, file1c
file2/file2a, file2b, file2c

变量是什么:这些文件夹的数量。

答案1

使用for循环:

for f in file*; do 
  mkdir -p "${f%%[^0-9]}"
  mv -v "$f" "${f%%[^0-9]}/"
done

  • 它循环遍历目录中以 开头的所有文件file
  • mkdir -p如果目录不存在则创建该目录。
    • ${f%%[^0-9]}^:这将删除文件名后面不包含数字的部分;即目录名。
  • 最后mv将文件移动到相应的目录中。

执行后的目录树:

├── file1
│   ├── file1a
│   ├── file1b
│   └── file1c
└── file2
    ├── file2a
    ├── file2b
    └── file2c

相关内容