我有一个包含这些文件的目录
2022-11-08-0001.gzip
2022-11-08-0002.gzip
2022-11-08-0003.txt
2022-11-08-0004.png
2022-11-08-0005.txt
2022-11-08-0006.txt
2022-11-08-0007.png
2022-11-08-0008.txt
2022-11-08-0009.txt
2022-11-08-0010.png
并想像这样将它们拆分为子目录
/gzip
2022-11-08-0001.gzip
2022-11-08-0002.gzip
/png
2022-11-08-0004.png
2022-11-08-0007.png
2022-11-08-0010.png
/txt
2022-11-08-0003.txt
2022-11-08-0005.txt
2022-11-08-0006.txt
2022-11-08-0008.txt
2022-11-08-0009.txt
我找到了这个简短而甜蜜的解决方案,但由于文件扩展名的长度不同,我无法根据自己的需要对其进行自定义。但是,文件的基本名称长度相同。
使用
zsh
(并假设模式2022-*.*
匹配所有相关文件,即名称以字符串开头2022-
并包含至少一个点的文件):在
zsh
,$variable:e
将与 相同$variable
,但删除最后一个点之前的所有内容(留下“扩展名”)。测试:
使用
zsh
from (并在脚本中bash
使用的缩写形式,并将变量的名称压缩为):for
zsh -c
name
n
您只需遍历每个文件名,如果匹配的目录尚不存在,则创建匹配的目录,然后将文件移动到那里。就像是