Предполагая, что вам нужен список файлов и временных меток, упорядоченный по временной метке:
while IFS=: read mtime fname ; do
echo "mtime = [$mtime] / fname = [$fname]"
done < <(find . -printf '%T@:%f\n' | sort -t:)
Я выбрал :
в качестве разделителя, поскольку он довольно редко используется в качестве символа для ваших имен файлов,даже запрещено в DOS / NTFS
С такими строгими требованиями (имена файлов с :
или \n
в качестве возможных символов), чтобы получить то, что вам нужно, вы можете попробовать:
while IFS= read -r -d '' mtime; do
read -r -d '' fname;
echo "[$mtime][$fname]";
done < <(find . -maxdepth 3 -printf '%T@\0%p\0' ) | sort -nr
Попытка решить новые строки, встроенные в имена файлов:
while IFS= read -r -d '' mtime; do
read -r -d '' fname;
printf "[%s][%s]\0" "$mtime" "$fname";
done < <(find . -maxdepth 3 -printf '%T@\0%p\0' ) \
| sort -nrz | tr \\0 \\n