2015-06-02 2 views
0

Настоящий новичок в командах Unix, поэтому не уверен, что на самом деле это возможно, но здесь. Можно ли выделить только один элемент в выводе ls?Как я могу выделить только один элемент из вывода ls

т.е .: в директории, я использую следующие

ls -l --color=auto 

этот список 4 пунктов в зеленом

file1.xls 
file2.xls 
file3.xls 
file4.xls 

Но я хочу, чтобы выделить определенный элемент, в данном случае file2. Возможно ли это?

ответ

0

Программа ls не сделает это за вас. Но вы можете отфильтровать результаты от ls через специальный скрипт, который изменяет текст, чтобы выделить только один элемент. Было бы проще, если бы цвет не был первоначально задан; то вы можете сопоставлять имя файла (например, как шаблон в awk-скрипте или в сценарии sed) и изменять только один элемент, добавляя цвета.

То есть, конечно можно. Написание сценария образца - это другой вопрос.

Как вы относитесь к проблеме, зависит от того, что вы хотите с выхода. Если это (буквально) вывод из ls с единственным именем в цвете, то сценарий будет обычным подходом. Вы можете использовать grep как предложено в другой ответ, который поднимает несколько вопросов:

  • комментирование на ls -l --color=auto делает его звук, как будто вы используете GNU Ls, а значит, скорее всего, используя Linux. Соответствующим тегом для вопроса будет linux, а не unix. Если вы запрашиваете unix, ответы должны отличаться.
  • Предположим, что вы используете Linux. Тогда, вероятно, у вас есть GNU grep, который может делать цвета. Это позволит вам сделать что-то вроде этого:

    ls -l | grep --color=always file2 |less -R

  • однако, есть известная ошибка в использовании GNU Grep о цвете (см XTERM FAQ "grep --color" does not show the right output).
  • Использование grep, как это показывает только соответствующие линии. Для ls это может быть хорошим выбором. Для матчей на странице руководства - определенно нет.

В качестве альтернативы less (который чаще встречается на системах Unix, чем GNU Grep) также можно выделить матчи (не в цвете), и будет показывать файл, который вы ищете в контексте. Вы можете сделать это:

ls -l | less -p file2 

(Оба grep и less использование модели ака регулярные выражения, но я оставил пример простой — читать документацию, чтобы узнать больше).

0

Если вы новичок, я бы настоятельно рекомендуем вам изучить команду grep, если вы хотите, чтобы отфильтровать результаты - Unix пользователи лучший друг (мой все равно)

Используйте grep только для отображения списка элементов, которые требуется см ...

ls- l | grep "file2" 

ПРИМЕЧАНИЕ: Это не отличается вводить ls -l file2 по пути, но ваша модель может быть расширена на основе того, что вы на самом деле хотите отобразить на экране.

Итак, если у вас есть каталог с файлами «.txt», «.xls», «.doc», и вы хотели видеть только «.doc» со словом «работа» в имени (work1.doc) можно было бы написать:

ls -ls | grep "work" | grep "txt" 

Этот список будет work1.txt, work2.txt, work3.txt и так далее.

Это очень простой пример, но я использую grep широко в раковине unix и советую использовать это, чтобы фильтровать все результаты вместо цветов.

Немного примечание стороны, используя Grep -v покажет вам все, кроме шаблона вы даете ему

ls -l | grep -v ".txt" покажет все, НО файлы .txt.