Я хочу перечислить файлы, которые содержат только семь символов (без расширений) в имени файла.
У меня есть эти файлы в каталоге, например:
1234567
bar.12
dog.cat
1234567.txt
tst.new
big.tst
abcdefg
abcd.efg
Я хочу перечислить файлы, используя команду ls
, чтобы найти имена файлов без расширений, которые имеют ровно 7 символов. Я хочу, чтобы выходные данные выглядели примерно так:
$ ls <some kind of code>
1234567
abcdefg
Я предпочитаю не использовать какие-либо глобусы или команду find
.
В Bash:
for f in ??????? ; do
[[ $f = *.* ]] && continue;
echo $f ; # do something useful here
done
С find
:
find -maxdepth 1 -name "???????" ! -name "*.*"
Хотя, поскольку вы просили об этом без глобусов или находили и использовали слово «профессор», они, возможно, ищут для ls | grep ...
. Но см. Также пару причин, чтобы не использовать ls
для этого.
Вот своего рода решение с подстановочными знаками оболочки (точно 7 символов, которые не являются .
)
ls [!.][!.][!.][!.][!.][!.][!.]
, И вот решение с find
использование regex отрицание (не литеральное .
= [^\.]
) и определение, сколько символов {7}
find -maxdepth 1 -regextype posix-extended -regex '\./[^.]{7}'
Не, что Вы попросили, но я сомневаюсь, что оно может быть сделано без некоторых подстановочных знаков или regex.
С расширенными шариками в zsh
:
% ls
1234567 1234567.txt abcdefg abcd.efg bar.12 big.tst dog.cat tst.new
затем
% setopt extended_glob
% ls (?~.)(#c7)
1234567 abcdefg
?~.
любой символ кроме .
(#c7)
globbing отмечает эквивалентный квантору регулярного выражения {7}
, См. zsh: 14 Расширений
nvidia
, потому что существует только один GPU. Я заменил Radeon GPU Nvidia. Проблемой является точно то же во всех плеерах. Нет, изображение не teared
, не то, чтобы видимо. Переход между кадрами не является гладким. It' s как то, когда система вне памяти, но у меня есть RAM на 64 ГБ.
– Googlebot
5 April 2019 в 21:32