我有一个包含数百个文件(macos)的目录,并且我想让bash脚本将每个文件复制到文件上创建标记的目录中。因此,如果temp.mp4是在2019-12-10上创建的,则文件将被复制到该目录中,该目录可能存在也可能不存在。
如果不需要,我不想将任何内容写入临时文件。我发现以下代码仅获取文件和日期YYYY-MM-DD格式:
gls -lt --time-style=+"%Y-%m-%d" | awk '{print $6,$7}'
但是我不确定如何迭代/测试(将其插入另一个awk实例吗?)。伪代码:
if ([ -f $7 ] && if ([ -d $6 ] #If the file and directory exist
{
mv $7 $6 #move the file to the existing directory
}
else
{
mkdir $6 #create the directory based on date creation attribute of the file
mv $7 $6 #move the file to the directory
}
我不必担心递归地浏览目录。所有文件都在一个目录中。
============= 根据下面的一些反馈,我正在扩展我的问题以澄清我所看到的。这是我正在使用的脚本(请注意,从硬编码的“ * .mp4”更改为$ 1):
#!/bin/bash
gstat -c '%w %n' $1 | gcut --complement -f 2,3 -d' ' | while read FILE
do
NAME=${FILE#* }
DATE=${FILE%% *}
[ -d ${DATE} ] || mkdir ${DATE}
mv -i "${NAME}" ${DATE}/
done
在我的目录中,有两个文件不会移动。这是目录的样子(ls -l):
╰─ ls -l
total 16
drwxr-xr-x 9 awagoner staff 288 Nov 6 21:44 2019-11-03
drwxr-xr-x 4 awagoner staff 128 Nov 7 11:19 2019-11-06
-rw-r--r-- 1 awagoner staff 138 Mar 19 2019 Pipfile
-rw-r--r--@ 1 awagoner staff 715 Nov 1 13:53 php_errorlog
我不确定如何将所有文件移动到关联的目录。是否有某个字符串可以覆盖所有文件(AAA,AAA.AAA,.AAA)?