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

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 
  • Проверьте, содержит ли переменная оболочки абсолютный путь
  • как вводить нажатия клавиш в программе, например Safari, из сценария bash?
  • Сценарий Bash для извлечения некоторой информации из HTML-страниц Ebay
  • sudo script - лучшая практика?
  • Получить имя устройства подключенного USB-диска
  • Как копировать, выполнять и извлекать данные с удаленного компьютера?
  • Динамическая конфигурация пользователя для git с помощью сценария-оболочки?
  • Регулярное выражение для смешанных слов
  • Возможно ли эхо в файл, но использовать отступы в источнике сценария оболочки?
  • Bash: Цитирование через строку
  • Как убить работу с помощью бесконечного цикла
  • Как запустить скрипт bash из сценария sh (dash)?
  • Linux и Unix - лучшая ОС в мире.