У меня есть каталог с сотнями файлов (macos), и я хотел бы, чтобы bash-скрипт копировал каждый файл в каталог с меткой создания файла. Таким образом, если temp.mp4 был создан 2019-12-10, файл будет скопирован в этот каталог, который может существовать или не существовать.
Я не хочу ничего записывать во временный файл, если я наденуне должен. Я обнаружил, что следующий код получает только файл и дату в формате ГГГГ-ММ-ДД:
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)?