Создать структуру файла на основе даты файла - PullRequest
0 голосов
/ 04 февраля 2020

Я хочу создать сценарий Unix, который будет архивировать файлы на основе даты их создания. Если у файла есть дата 2020/02/03, это должно автоматически создать структуру каталогов на основе даты файла, например, Каталог будет 2020 годом, в этом каталоге должен быть месяц, а в пределах даты / дня, когда файл был создан

Ответы [ 3 ]

0 голосов
/ 04 февраля 2020

Если разделитель даты не "/", то это должно сработать (в этом случае разделитель даты - "-"):

for foo in $(stat -c "%x" * | awk '{print $1}'); do 
  mkdir $(echo $foo | cut -d\- -f1); 
  mkdir $(echo $foo | cut -d\- -f2); 
  mkdir $(echo $foo | cut -d\- -f3); 
done

"% x" в stat команда для получения последней отметки времени доступа, однако я думаю, что вы имеете в виду «% w»:

% w время рождения файла, читаемое человеком; - если неизвестно

% x время последнего доступа, читаемое человеком

0 голосов
/ 04 февраля 2020

Вы должны будете заключить решение Ромео Нинова ниже в al oop следующим образом:

for file in *; do
  date=$(stat -c "%y" "$file" | cut -d ' ' -f 1)
  year=${date:0:4}
  month=${date:5:2}
  day={date:8:2}

  mkdir -p $year/$month/$day
  mv "$file" $year/$month/$day

done

В отличие от juanp, я использую дату последней модификации %y вместо даты рождения файла, который не всегда доступен и, вероятно, не имеет значения.

0 голосов
/ 04 февраля 2020

Самый простой способ - использовать команду вроде:

mkdir -p 2020/02/03

Если вы проверите команду man команды mkdir , вы увидите:

-p , --parents
без ошибок, если они существуют, при необходимости создайте родительские каталоги

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...