Цитирование файлов листинга в 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.

  • Пакетное извлечение и повторная упаковка .RAR-файлы
  • Как ssh в удаленном ящике, запустите команду и продолжайте ее работу после отключения
  • Как найти и удалить дубликаты файлов в одном каталоге?
  • Как читать иглу части команды sed из файла?
  • Использование MPI с .sh скриптом?
  • `Синтаксическая ошибка:" ("неожиданно" при создании массива
  • KSH / BASH Максимальный размер массива
  • Сценарий оболочки не отображает последнюю строку stdout на экране без ввода пользователем
  • 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

    получить общие файловые системы, работающие с virt-manager 1.3.2 в ubuntu 16.04 LTS

    Как фильтровать STAT с помощью ps?

    Могу ли я восстановить удаленные файлы моего Linux-жесткого диска из Windows?

    Как запретить файловому файлу Matlab делать какие-либо изменения в файловой системе?

    Как установить шрифт виртуальной консоли на Arch?

    Автоматически устанавливать зависимости сборки перед созданием пакета RPM

    Как я могу получить свой Mountain Lion Mac, чтобы Apache обслуживал контент на порту 80?

    Логфайлы для не заканчивающихся процессов

    Расположение конфигурации Manjarno-i3

    Почему мой Perl не играет хорошо с Unicode?

    Имена файлов каталогов с sed с пробелами

    Виртуальная точка беспроводного доступа

    В bash, каковы потенциальные негативные последствия приостановки процесса с контролем-z?

    Зацикливание записей в каталоге bash и сохранение в массив

    Запустить приложение, используя xinit на разных tty

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