Колотите ls (стиль шарика)

У меня есть excersise, в котором я должен напечатать все имена файлов, которые содержатся в текущей папке, которые содержат в них одно из писем [a-k] и [m-p] и [1-9] по крайней мере в 1 раз (каждый). Я, вероятно, должен использовать ls (стиль шарика) .

2
I' d использование grep и regex: ls-1 | grep-E "your_regex"
добавлено автор Blender, источник
Don' t разбирают ls
добавлено автор dogbane, источник
Don' t разбирают ls
добавлено автор dogbane, источник
Don' t разбирают ls
добавлено автор dogbane, источник
Эта домашняя работа?
добавлено автор fbynite, источник
Эта домашняя работа?
добавлено автор fbynite, источник
Эта домашняя работа?
добавлено автор fbynite, источник
Это может помочь вам stackoverflow.com/q/14004201/722238
добавлено автор fbynite, источник
Это может помочь вам stackoverflow.com/q/14004201/722238
добавлено автор fbynite, источник
ха? Я должен использовать ls [стиль шарика]
добавлено автор user1923376, источник
этот вопрос был первоначально моим.. xD и нет - это doesn' t помощь. Теперь I' m, на самом деле решая эту вещь с egrep, но не уверенный, как я пишу, что последовательность должна содержать по крайней мере в 1 раз [a-k] [m-p] [1-9] в reg выражениях..
добавлено автор user1923376, источник
этот вопрос был первоначально моим.. xD и нет - это doesn' t помощь. Теперь I' m, на самом деле решая эту вещь с egrep, но не уверенный, как я пишу, что последовательность должна содержать по крайней мере в 1 раз [a-k] [m-p] [1-9] в reg выражениях..
добавлено автор user1923376, источник
этот вопрос был первоначально моим.. xD и нет - это doesn' t помощь. Теперь I' m, на самом деле решая эту вещь с egrep, но не уверенный, как я пишу, что последовательность должна содержать по крайней мере в 1 раз [a-k] [m-p] [1-9] в reg выражениях..
добавлено автор user1923376, источник
ха? Я должен использовать ls [стиль шарика]
добавлено автор user1923376, источник
хорошо, я don' t знают то, что regex, и я на самом деле должен использовать ls, я думаю.. спасибо
добавлено автор user1923376, источник
хорошо, я don' t знают то, что regex, и я на самом деле должен использовать ls, я думаю.. спасибо
добавлено автор user1923376, источник
хорошо, я don' t знают то, что regex, и я на самом деле должен использовать ls, я думаю.. спасибо
добавлено автор user1923376, источник

12 ответы

Если заказ важен тогда, можно использовать globbing:

$ ls *[a-k]*[m-p]*[1-9]*
ajunk404  am1  cn5

Еще просто grep для каждой группы отдельно:

ls | grep "[a-k]" | grep "[m-p]" | grep "[1-9]"
1ma
ajunk404
am1
cn5
m1a

Примечание: ls покажет справочники, если вы действительно только захотите использование файлов , находят внутри:

find . -maxdepth 1 -type f | grep "[a-k]" | grep "[m-p]" | grep "[1-9]"
3
добавлено

Если заказ важен тогда, можно использовать globbing:

$ ls *[a-k]*[m-p]*[1-9]*
ajunk404  am1  cn5

Еще просто grep для каждой группы отдельно:

ls | grep "[a-k]" | grep "[m-p]" | grep "[1-9]"
1ma
ajunk404
am1
cn5
m1a

Примечание: ls покажет справочники, если вы действительно только захотите использование файлов , находят внутри:

find . -maxdepth 1 -type f | grep "[a-k]" | grep "[m-p]" | grep "[1-9]"
3
добавлено

Если заказ важен тогда, можно использовать globbing:

$ ls *[a-k]*[m-p]*[1-9]*
ajunk404  am1  cn5

Еще просто grep для каждой группы отдельно:

ls | grep "[a-k]" | grep "[m-p]" | grep "[1-9]"
1ma
ajunk404
am1
cn5
m1a

Примечание: ls покажет справочники, если вы действительно только захотите использование файлов , находят внутри:

find . -maxdepth 1 -type f | grep "[a-k]" | grep "[m-p]" | grep "[1-9]"
3
добавлено

100%-й чистый удар (и забавный!) возможность:

#!/bin/bash

shopt -s nullglob
a=( *[a-k]* )
b=(); for i in "${a[@]}"; do [[ "$i" = *[p-z]* ]] && b+=( "$i" ); done
c=(); for i in "${b[@]}"; do [[ "$i" = *[1-9]* ]] && c+=( "$i" ); done
printf "%s\n" "${c[@]}"

Никакие внешние процессы вообще! Никакие трубы! Только чистый удар! 100%-й сейф относительно файлов с забавными символами на их имя (например, новые строки) (и это не имеет место с другими методами, используя ls ). И если вы хотите на самом деле видеть забавные символы в именах файлов и указать их правильно, чтобы снова использовать продукцию, использовать

printf "%q\n" "${c[@]}"

вместо последнего printf заявление.

Note. The patterns [a-k], [p-z] are locale-dependent. You might want to set LC_ALL=C to be sure that [a-k] really means [abcdefghijk] and not something else, e.g., [aAbBcCdDeEfFgGhHiIjJk].

Надежда это помогает!

1
добавлено

100%-й чистый удар (и забавный!) возможность:

#!/bin/bash

shopt -s nullglob
a=( *[a-k]* )
b=(); for i in "${a[@]}"; do [[ "$i" = *[p-z]* ]] && b+=( "$i" ); done
c=(); for i in "${b[@]}"; do [[ "$i" = *[1-9]* ]] && c+=( "$i" ); done
printf "%s\n" "${c[@]}"

Никакие внешние процессы вообще! Никакие трубы! Только чистый удар! 100%-й сейф относительно файлов с забавными символами на их имя (например, новые строки) (и это не имеет место с другими методами, используя ls ). И если вы хотите на самом деле видеть забавные символы в именах файлов и указать их правильно, чтобы снова использовать продукцию, использовать

printf "%q\n" "${c[@]}"

вместо последнего printf заявление.

Note. The patterns [a-k], [p-z] are locale-dependent. You might want to set LC_ALL=C to be sure that [a-k] really means [abcdefghijk] and not something else, e.g., [aAbBcCdDeEfFgGhHiIjJk].

Надежда это помогает!

1
добавлено

100%-й чистый удар (и забавный!) возможность:

#!/bin/bash

shopt -s nullglob
a=( *[a-k]* )
b=(); for i in "${a[@]}"; do [[ "$i" = *[p-z]* ]] && b+=( "$i" ); done
c=(); for i in "${b[@]}"; do [[ "$i" = *[1-9]* ]] && c+=( "$i" ); done
printf "%s\n" "${c[@]}"

Никакие внешние процессы вообще! Никакие трубы! Только чистый удар! 100%-й сейф относительно файлов с забавными символами на их имя (например, новые строки) (и это не имеет место с другими методами, используя ls ). И если вы хотите на самом деле видеть забавные символы в именах файлов и указать их правильно, чтобы снова использовать продукцию, использовать

printf "%q\n" "${c[@]}"

вместо последнего printf заявление.

Note. The patterns [a-k], [p-z] are locale-dependent. You might want to set LC_ALL=C to be sure that [a-k] really means [abcdefghijk] and not something else, e.g., [aAbBcCdDeEfFgGhHiIjJk].

Надежда это помогает!

1
добавлено

Чтобы быть полными, необходимо искать все комбинации:

ls *[a-k]*[m-p]*[1-9]* *[a-k]*[1-9]*[m-p]* \
   *[m-p]*[a-k]*[1-9]* *[m-p]*[1-9]*[a-k]* \
   *[1-9]*[m-p]*[a-k]* *[1-9]*[a-k]*[m-p]*
0
добавлено

Чтобы быть полными, необходимо искать все комбинации:

ls *[a-k]*[m-p]*[1-9]* *[a-k]*[1-9]*[m-p]* \
   *[m-p]*[a-k]*[1-9]* *[m-p]*[1-9]*[a-k]* \
   *[1-9]*[m-p]*[a-k]* *[1-9]*[a-k]*[m-p]*
0
добавлено

Чтобы быть полными, необходимо искать все комбинации:

ls *[a-k]*[m-p]*[1-9]* *[a-k]*[1-9]*[m-p]* \
   *[m-p]*[a-k]*[1-9]* *[m-p]*[1-9]*[a-k]* \
   *[1-9]*[m-p]*[a-k]* *[1-9]*[a-k]*[m-p]*
0
добавлено

Если заказ не важен, и письма появляются однажды или больше, можно использовать прикованные цепью власти.

ls | egrep "[a-k]" | egrep "[m-p]" | egrep "[1-9]"

Если заказ имеет значение, то просто используют образец шарика

ls *[a-k]*[m-p]*[1-9]*
0
добавлено

Если заказ не важен, и письма появляются однажды или больше, можно использовать прикованные цепью власти.

ls | egrep "[a-k]" | egrep "[m-p]" | egrep "[1-9]"

Если заказ имеет значение, то просто используют образец шарика

ls *[a-k]*[m-p]*[1-9]*
0
добавлено

Если заказ не важен, и письма появляются однажды или больше, можно использовать прикованные цепью власти.

ls | egrep "[a-k]" | egrep "[m-p]" | egrep "[1-9]"

Если заказ имеет значение, то просто используют образец шарика

ls *[a-k]*[m-p]*[1-9]*
0
добавлено
Linux Help
Linux Help
2 686 участник(ов)

Правила: https://telegra.ph/Pravila-Linux-Help-10-15

Linux Security
Linux Security
652 участник(ов)

Данная группа принципиально про безопасность и в частности про безопасность Linux. Прочие темы просим обсуждать в профильных чатах.

pro.bash
pro.bash
123 участник(ов)

All about Nix shells, signals, processes and development in general.

Linux Gaming RUS
Linux Gaming RUS
28 участник(ов)

Русскоязычный чатик, посвящённый играм на различных дистрибутивах Linux, а также wine, proton Arch Linux RU @ArchLinuxChatRU Gnome RU @gnome_ru