Поскольку придумывать личное любимое решение - это весело, я присоединюсь:
Решение (Спойлер)
@ пользователь неизвестен:
Я знаю, что вы троллинг, но в интересах случайных читателей
Я допускаю, что встроенные расширения там небезопасны. Я действительно показывал, как я собирался использовать команды (ls, find, uniq) и т. Д. В комбинации. Это можно сделать безопасным:
find -type f -printf '%f\0' | sort -uz |
xargs -0i -n1 find -name {} -printf "%f:%p\n"
Форматирование теперь немного менее удобно (опять же, как вы бы отформатировали его с помощью специальных символов в путевых именах?). Вопрос мало говорит на эту тему, так что ...
Последнее замечание:
the first read is already broken with (...) blanks in filenames
- неверно
while read
только с символами новой строки, попробуйте: read line <<< "a b c" && echo "'$line'"
Оригинальные дидактические указатели
Используйте
dirname
a/b/c/file -> a/b/c
basename
a/b/c/file -> file
ls -t / ls -tr
sort files by timestamp; note that 'creation date' is likely a fob because hardly any filesystem stores these reliably (it is usually the last change date for the inode)
find -type f
find -type d
find files or directories
sort | uniq
sort -u
sort lines and remove adjacent (subsequent) duplicates
Дайте мне знать, помогло ли это. Я мог бы сделать небольшой шаг, кроме указателей на команды UNIX