![Bash 命令创建文件夹并将特定文件移入其中](https://linux22.com/image/126540/Bash%20%E5%91%BD%E4%BB%A4%E5%88%9B%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9%E5%B9%B6%E5%B0%86%E7%89%B9%E5%AE%9A%E6%96%87%E4%BB%B6%E7%A7%BB%E5%85%A5%E5%85%B6%E4%B8%AD.png)
我正在尝试使用 bash 来实现这一点
我有一个文件目录,获取图片的示例如下:
January 2010 MA - C3 Edexcel.pdf
January 2010 MS - C3 Edexcel.pdf
January 2010 QP - C3 Edexcel.pdf
January 2011 MA - C3 Edexcel.pdf
January 2011 MS - C3 Edexcel.pdf
January 2011 QP - C3 Edexcel.pdf
我正在寻找一个命令,该命令将从每年获取三个文件并将其放入该年的文件夹中,例如,前三个文件应放入名为 2010 的文件夹中,第二组三个文件应放入文件夹名为 2011。
所以我想做的是
mkdir 2010| mv *2010* 2010
对于文件中的每一年
需要明确的是,该文件夹比我展示的要大得多,这意味着逐年进行会花费太多时间
这可能吗?
答案1
这个脚本片段将满足您多年来的要求:
for i in $(seq 2010 2020); do
mkdir -p "$i" &&
mv *"$i"*.pdf "$i"
done
答案2
一个简单的方法来理解它
mkdir 2010 && mv *2010*pdf !$
2011 年也是如此...
这是循环多年文件的解决方案
for i in $(seq 0 9) ; do mkdir 201${i} && mv *201${i}*pdf !$ ; done