Как получить список файлов без каталога в каталоге в Aix или Unix?

77
3

Я хочу получить список файлов без каталога в каталоге. Команда find работает, но параметр maxdepth 1 не работает, возможно, потому, что он не поддерживается в Aix.


Эта команда:


find . -maxdepth 1 -type f  

возвращает:


find: bad option -maxdepth

Я использовал эту команду:


ls -l | grep ^- | awk '{print $9}'

но это не работает, если имя файла содержит пробел. Есть ли способ решить это?

спросил(а) 2021-01-19T18:39:42+03:00 6 месяцев назад
1
Решение
63

Уходя с вашей последней попытки, похоже, все в порядке:


ls -l | grep ^- | awk '{for(i=1;i<9;i++) $i="";print}' | sed 's/^        //'

Возможно, будет лучший способ (я надеюсь, что есть!), но это сбивает первые восемь полей, оставляя восемь пробелов, а затем остальную часть строки (так что пробелы в именах файлов в порядке), а затем удаляет эти ведущие восемь пробелов.


Я предпочитаю эту версию bash, которая разрезает преследование:

for f in *; do if [ -f "$f" ]; then echo "$f"; fi; done

Я уверен, что вы можете настроить это для ksh (с которым я не знаком).


Я все еще надеюсь, что кто-то еще узнает что-то более прямое.

ответил(а) 2021-01-19T18:39:42+03:00 6 месяцев назад
47

Это работает для меня для файлов, содержащих более одного места в имени. Сокращает его до одной трубы.

Я лично хотел бы найти что-то более элегантное.

ls -l | awk '/^-/ {for(i=9;i<=NF;i++){printf "%s ", $i}print "";}'

ответил(а) 2021-01-19T18:39:42+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема