Цитирование файлов листинга в UNIX

Я дал команду:

ls -lrt 

и перечисленные файлы и каталоги:

 drwxr-xr-x 4 root root 4096 Feb 2 2014 abc drwxr-xr-x 4 root root 4096 Feb 2 2014 cde drwxr-xr-x 4 root root 4096 Feb 2 20014 efg -rwxr-xr-x 4 root root 4096 Feb 2 20014 aaa.txt 

Теперь я хочу найти, являются ли перечисленные выходные файлы каталогом или нет, используя цикл цикла или while.

  • Получить массив имен снимков LXD
  • Найти все физические интерфейсы во FreeBSD
  • Структура структуры преобразования
  • Как проверить ввод чисел в оболочке Linux?
  • Сценарий для отображения количества файлов (по типу файлов) в каталоге?
  • как добавить файл в ipset в сценарий оболочки?
  • Проблема использования пользовательской переменной в скрипте
  • Какой смысл перенаправлять вывод grep на / dev / null?
  • 3 Solutions collect form web for “Цитирование файлов листинга в UNIX”

    С помощью ls используйте команду ниже, чтобы перечислять только каталоги.

     ls -d -- */ 

    Чтобы перечислить обычные файлы, используя сам ls (и если имена файлов не содержат символов новой строки), вы можете использовать приведенную ниже команду.

     ls -p | grep -v / 

    Чтобы перечислять только обычные файлы, с GNU и несколькими другими реализациями, вы можете использовать

     find . -maxdepth 1 -type f 

    (обратите внимание, что в отличие от предыдущего, он также содержит скрытые файлы, и список не сортируется)

    Стандартным эквивалентом будет:

     find . ! -name . -prune -type f 

    Вам не понадобится цикл для поиска каталогов, вместо этого вы можете использовать команду find :

     find . -maxdepth 1 -type d 

    Это отобразит все каталоги в текущем каталоге. Если вы хотите вывести ls -l вы можете сделать:

     find . -maxdepth 1 -type d | xargs ls -ld 

    Если вы действительно хотите использовать цикл, вы можете использовать следующую конструкцию:

     for file in $(ls) do if [[ -d $file ]] then ls -ld $file fi done 

    Цикл for циклически перекрывает все записи, возвращаемые ls , тогда тесты if, если запись является каталогом.

    Если вам предоставлен только вывод ls -ltr , продолжайте читать этот пост. В противном случае взгляните на то, что предложили другие плакаты, такие как Ramesh или mtak .

    Первая буква каждой строки вашего вывода сообщает вам, является ли это каталогом или нет.

    Поэтому мое наивное решение было бы:

     while read line; do [ "${line:0:1}" == "d" ] && echo "$line" | awk '{print $NF}' # it is a directory, echo the directory name done < outputfilename 
    Interesting Posts

    Как ограничить пользователя SSH разрешать только SSH-туннелирование?

    Можно ли предотвратить создание файлов, являющихся общедоступными для чтения?

    что означает elibc_FreeBSD в наложениях gentoo portage?

    Виртуальная консоль TTY + tmux: кажется, что ~ / .bashrc запускается более одного раза?

    Добавление www в URL: не работает

    два физических диска с одинаковыми именами групп томов, препятствующие доступу

    Можно ли использовать sed для генерации файла нагрузки для таблицы фактов поиска даты?

    Перенаправление доменов на разные порты на одном компьютере

    Извлеките файлы жестких ссылок с помощью tar

    Нет дампа ядра на Ubuntu в общей папке Parallels

    Граф и сумма нет. появления каждой уникальной строки в файле

    Поиск, вставка, перемещение и вставка

    Режим перехвата SQUID с использованием внешней проверки подлинности и ICAP с адаптационным_send_username не работает

    X0 не существует в каталоге

    Невозможно остановить bash, чтобы развернуть звезду (символ подстановки), переданный в приложение из shellscript

    Linux и Unix - лучшая ОС в мире.