Как перечислить только файлы в каталоге, разделенные запятыми

Как перечислить только файлы в каталоге, разделенные запятыми

Итак, никаких каталогов и никаких скрытых файлов. Только файлы. Список только файлов можно сделать с помощью следующей строки.

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; последняя часть избавляется от команды в конце списка.

Связанный контент