Итак, никаких каталогов и никаких скрытых файлов. Только файлы. Список только файлов можно сделать с помощью следующей строки.
ls -p | grep -v /
Теперь я хочу, чтобы результат этой строки был разделен запятыми.
решение1
Вы можете использовать его tr
для этой работы.
ls -p | grep -v / | tr '\n' ','
решение2
Вы можете использовать команду GNU ls -m
. Она выведет все файлы и каталоги, разделенные запятой.
решение3
Решение, предложенное Томасом, работает, но оно добавляет запятую к последнему элементу (что может быть не тем, что вам нужно) и удаляет пробелы после запятых. Следующая альтернатива сохраняет пробелы после запятых и не добавляет запятую после последнего элемента:
ls -1p | grep -v / | xargs echo | sed 's/ /, /g'
Конечно, если вы хотите избавиться от пробелов между элементами, просто измените выражение sed:
ls -1p | grep -v / | xargs echo | sed 's/ /,/g'
(Примечание для пользователей, использующих шрифт, в котором строчная буква «l» и цифра «1» (один) выглядят одинаково: первый переданный параметр ls
— это 1
цифра, а не строчная буква l
.)
Как указал Джим Л в комментарии, приведенные выше команды работают только для имен файлов, которые не содержат пробелов. Следующие команды работают в обход этого:
ls -1p | grep -v / | sed 's/$/, /g' | xargs echo | sed 's/,$//g'
Это заменяет окончания строк запятыми перед передачей списка echo
; последняя часть избавляется от команды в конце списка.