Bash: сортировка элементов массива по дате файла

У меня есть Bash-скрипт с массивом myarray.

Этот массив содержит полные пути расположения файлов для 4 файлов.

То, что я пытаюсь сделать, это отсортировать элементы массива по дате создания файла.

Так что, как быстрый пример, если у меня есть следующие 4 файла в массиве:

/tmp/file1.txt (in index 0) /tmp/test/file1.txt (in index 1) /tmp/test1/file1.txt (in index 2) /tmp/test2/file1.txt (in index 3) 

… и файл в индексе 2 имеет более новую дату создания, а затем остальные, он должен быть отсортирован по индексу 1 и так далее.

Первоначально я думал, что это сделает следующее:

 myarray=($(for each in ${myarray[@]}; do echo $each; done | sort -n)) 

Но если я посмотрю на содержимое массива, я не вижу новый файл в индексе 0.

Кто-нибудь знает, как это сделать в bash?

One Solution collect form web for “Bash: сортировка элементов массива по дате файла”

Следующие типы файлов по дате изменения, так как дата создания не поддерживается в системе, в которой я тестировал скрипт. Замена %Y %W должна выводить время создания, если поддерживается.

 #! /bin/bash files=(*.txt) while IFS= read -r line ; do sorted+=("$line") done < <( for f in "${files[@]}" ; do echo $(stat -c %Y -- "$f")$'\t'"$f" done | sort -nk1,1 | cut -t $'\t' -f2- ) echo "${sorted[@]}" 

Он работает для файлов с пробелами в их именах. Имена файлов, содержащие новые строки, могут сломать его, но вы не используете символы новой строки в именах файлов, верно?

  • найти команду для новейших 500 файлов в дереве каталогов, а также быть совместимым с POSIX
  • Извлечь дату создания и время изменения файла в Sunos
  • Как я могу хранить mtime файлов и каталогов, когда я использую rsync или cp? Для использования в резервном / инкрементальном резервном копировании
  • Команда одиночной строки для протоколирования IP-адресов
  • Загрузите только недавно измененные файлы с помощью wget over FTP
  • Универсальная альтернативная альтернатива non-bash `time`?
  • Разница между `ls -c` и` ls -t`
  • Задача Cron для удаления файлов старше 3 дней
  • Как я могу изменить дату, измененную для папки, на последний измененный файл внутри?
  • Извлечь временную метку из файла gzip
  • Как отсортировать файлы в Bash с помощью ddmmyy timestamps в имени
  • Linux и Unix - лучшая ОС в мире.