Я хочу получить список файлов в текущем каталоге и его подкаталогах (я хочу использовать однострочный скрипт):
IFS=$(echo -en "\n\b");
for FILE in $(find -type f); do echo "$FILE"; done
Обычно это работает, как и ожидалось, но недавно, с моим списком файлов:
file_.doc
file_0.doc
file_ [2006_02_25] .doc
file_ [2016_06_16] .odt
file_ [2016_06_16] .pdf
file_ [16-6-2006] .doc
file_.pdf
file_ 4-4-2006.doc
выход:
./file_.doc
./file_0.doc
./file_0.doc
./file_[2016_06_16].odt
./file_[2016_06_16].pdf
./file_0.doc
./file_.pdf
./file_ 4-4-2006.doc
Если я изменю переменную IFS на:
IFS=$(echo -en "\n");
тогда вывод будет (исправлен):
./file_.doc
./file_0.doc
./file_[2006_02_25].doc
./file_[2016_06_16].odt
./file_[2016_06_16].pdf
./file_[16-6-2006].doc
./file_.pdf
./file_ 4-4-2006.doc
Я прочитал, что '\b'это необходимо , и нашел решение, которое использует printfвместоecho .
Мои вопросы:
1) Не могли бы вы объяснить, что отличало эти результаты?
2) Решение, использующее printfвыше, может быть альтернативой echo -en "\n\b"?