如果我有一个文件夹,其中包含具有相同模式的各种文件,例如:
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