Я пытался создать сценарий bash, который делает следующее.

Используйте команду find для поиска файлов старше 7 дней (find . -type f -mtime +7 ! -iname '.*' , Выберите родительский каталог (из найденных файлов), создайте новую папку с именем parent directory в другом каталоге и добавьте _todaysDate (date '+%m%d&y) и переместите туда найденные файлы.

что было бы лучше всего сделать это? while? for? do петли? Как бы вы поступили так?

заранее спасибо!

РЕДАКТИРОВАТЬ: Чтобы дать вам пример структуры файла

folder1
   - folder2
      -oldfile1

folder1a
   - folder2a
      -folder3a
        -oldfile2

----
In a new directory, a new folder would be created ( and that folder's name would be the parent folder of the old file, and tagged with a date (_040114) - this is where i get the format date '+%m%d%y) and the old files would then be moved in there. Example below -

- new_directory
  - folder2_date
    - oldfile1
  - folder3a_date
    - oldfile2

Я надеюсь, что это проясняет то, что я пытаюсь сделать.

1 ответ1

0

Ваша спецификация действительно может быть сделана с примером файловой структуры, поскольку она оставляет много возможностей для интерпретации. Какой (из нескольких распространенных вариантов использования, каждый из которых получил бы свой ответ) вы хотите?

Вот кое-что, чтобы вы начали. Я сделал предположение, что:

  • вы запускаете скрипт из / ЗДЕСЬ /
  • Вы хотите, чтобы архивные файлы находились в / ТАМ /
  • вы работаете в каталоге, содержащем подкаталоги (например, /HERE/lie/old/files.txt)
  • Вы хотите что-то вроде /THERE/lie_MMDDYY/old/files.txt

find . -type f -mtime +7 -printf '%h\n' \ | sort -u \ | sed -e 's,^./,,' \ | while read olddir do moveto="/THERE/$(echo \"$olddir\" | cut -d/ -f1)_$(date +%m%d%y)/$(echo \"$olddir\" | cut -d/ -f2-)" echo mv "$olddir" "$moveto" done

Когда будете готовы запустить его "в гневе", уберите "эхо". У меня была вся эта строка, но я разбил ее на части для удобства чтения.

Я бы порекомендовал вам изменить формат даты, чтобы использовать $(date -I), так как выходные данные будут сортироваться гораздо легче.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .