Как я могу сделать `ls` на dotfile?

488
dogbane

ls на точечный файл

Мой каталог содержит:

$ ls -A  .dotfile20091021 file20091020 file20091021 

Я хочу перечислить ВСЕ файлы, содержащие 20091021 в названии.

Если я бегу:

$ ls -A *20091021*  file20091021 

Если я бегу:

$ ls -A .*20091021*  .dotfile20091021 

Могу ли я получить оба файла в одной команде "ls"?

0
Вы когда-нибудь слышали о "grep"? Tim Post 14 лет назад 0

4 ответа на вопрос

4
Matthew Scharley
ls -A1 | grep "20091021" 
Я думаю, что это, пожалуй, лучший вариант, поскольку он опирается только на стандартный вывод ls и инструмент grep, оба из которых широко доступны. JF jfmessier 14 лет назад 0
2
razlebe

Вы можете просто сделать

ls -a *20091021 .*20091021 

(Строго придерживаясь вашего запроса, вы хотите сделать это в одном ls)

Это зависит от оболочки для расширения глобуса. Tim Post 14 лет назад 1
/ bin / sh может указывать на многие вещи, от дистрибутива до дистрибутива :) Tim Post 14 лет назад 0
Это не так много, что это может не сработать, а может привести к ошибкам, если глобус ничего не соответствует. Matthew Scharley 14 лет назад 0
1
Peter van der Heijden

По этой ссылке есть опция bash для создания глобальных файлов:

shopt -s dotglob 

Если вы используете bash, то все, что вам нужно будет сделать после этого:

ls -A *20091021* 

(Не могу проверить это здесь)

0
Tim Post

Вы полагаетесь (какую бы оболочку вы не использовали) на расширение глобуса.

ls -lah | grep \.foo 

.. может помочь вам разобраться в этом портативным способом.

Например:

user@tower:~ ls -lah | grep \.mozilla drwx------ 3 root root 4.0K 2007-11-14 06:17 .mozilla user@tower:~  

Вот сила трубы :) Расширение это упражнение для читателя. shopt не переносим и в системах, которые используют строго POSIX-оболочку (например, dash), он ломается. Лучше написать это просто и переносимо ... или вы загрузите свой проверенный и верный скрипт в коробку с каким-то другим дистрибутивом и будете ужасно смотреть, как он ломается.

Обратите внимание, что каждая оболочка выполняет расширение glob по-своему, что в целом определяется ее лицензией. Пожалуйста, пожалуйста, пожалуйста, избегайте излишеств. Ubuntu потратил десятки тысяч долларов, чтобы избавиться от тех, кто в их продукте.

Похожие вопросы