Мой друг послал мне по электронной почте это:
Это - часть библиотеки истории GNU. В ударе это используется, чтобы повторно выполнить команды в Вашей истории. Если Вы хотите быть хардкором, grep для history_expansion_char в bash-4.1/lib/readline/histexpand.c для деталей реализации.
Это походит на задание для find
.
-maxdepth
чтобы только возвратить текущий каталог не, recursivly ищут в подпапках-type f
только возвратить файлы и не каталоги или узлы устройства или безотносительно-not
и -name
для предотвращения файлов с именами, Вы не хотитеЭто могло бы объединиться как это:
find /path/to/uploads -maxdepth 1 -type f -not -name 't_*'
GNU ls (т.е. команда ls в невстроенных системах Linux и Cygwin, также доступном на некоторых других нельдах), имеет опцию скрыть некоторые файлы, на основе их имен. Нет никакого способа проигнорировать каталоги все же.
ls --hide='t_*' uploads
Другой подход должен заставить Вашу оболочку сделать соответствие. Bash, ksh и zsh имеют шаблон отрицания !(t_*)
соответствовать всем файлам кроме тех, которые соответствуют t*
; в ударе эта функция должна быть включена с shopt -s extglob
, и в zsh это должно быть включено с setopt ksh_glob
. Zsh также имеет эквивалентный синтаксис ^t_*
который должен быть включен с setopt extended_glob
. Это все еще не игнорирует каталоги. Zsh имеет дополнительную функцию, которая позволяет соответствовать файлам не только по имени, но также и метаданными и больше: спецификаторы шарика. Добавить (.)
в конце соответствия для ограничения регулярными файлами. Отрицание ^
часть синтаксиса соответствия имени, таким образом, ^t_*(.)
означает “все регулярные файлы, не соответствующие t_*
” и не “все файлы, которые не являются регулярным соответствием файлов t_*
”.
setopt extended_glob # put this in your ~/.zshrc
ls uploads/^t_*(.)
При нахождении без усовершенствованных инструментов можно сделать это на любом Unix с find
. Это не вид вещи, которую Вы обычно вводили бы на командной строке, но это мощно и точно. Caleb уже показал, как сделать, это с GNU находит. -maxdepth
опция не является портативной; можно использовать -prune
вместо этого, для портативной остановки find
от рекурсивного вызова.
find uploads/* -type d -prune -o \! -type f -name 't_*' -print
Замена -print
-exec ls -lG -- {} +
выполниться ls
с Вашими любимыми опциями на файлах.
Все команды выше скрывают точечные файлы (т.е. файлы, имя которых начинается с a .
). Если Вы хотите отобразить их, передачу -A
кому: ls
, или добавьте D
спецификатор шарика в zsh (ls uploads/^t_*(.D)
). С find
, можно использовать другой подход того, чтобы заставлять это рекурсивно вызвать один уровень только (find
не рассматривает точечные файлы особенно). Это только полностью работает, если Вы работаете find
в текущем каталоге.
cd uploads && find . -name . -o -type d -prune -o \! -type f -name 't_*' -print
-maxdepth
должен работать, но проблема "мобильности", к которой обращается Gilles, состоит в том что BSD find
(также найденный на OSX я думаю), немного другое животное, таким образом, Вам, возможно, понадобился бы его ответ также. @Gilles: +1 для приема zsh!
– Caleb
01.07.2011, 22:54
prune
s приходят на ум, но я позволю ему пройти, просто говоря, что, когда я небрежно обращаюсь в своих собственных системах с количеством раз, мысль "была бы эта команда работать, если я был на AIX, Солярис или MINIX3" являются приблизительно... резервным устройством... Мне нелегко получать показание... дисплей замораживается с 0.00
.
– Caleb
02.07.2011, 12:17
ls
имейте a --use-telepathy
опция? Это - самый быстрый способ отобразить просто файлы, которые Вы хотите. Это не могло бы быть портативно все же.
– dubiousjim
17.10.2012, 21:20
ls
вывод.
– jw013
17.10.2012, 20:36
Позвольте мне дать ему использование выстрела ls
и каналы:
ls -l --hide='t_*' uploads/ | grep -v ^d | tr -s ' ' | cut -d ' ' -f 9
скажите, что последний столбец является 9-м.
Если-maxdepth проблемой мобильности находки является беспокойство, Вы могли бы использовать:
ls -l uploads/ | awk '/^-/ && $9 !~/^t_/ {print $9}'
Я не эксперт, но я думаю, что это должно работать. Я предполагаю, что это выглядит немного загадочным, но если Вы говорите awk, это действительно нет. $NF мог использоваться вместо 9$. Вы могли также сделать:
ls -l uploads/ | awk '/^-/' | awk '!/^t_/ {print $9}'
который делает то же самое (но возможно менее эффективно, чем первый???).
На самом деле, после размышления о других сообщениях, это похоже
ls -l --hide=t_* uploads/ | awk '/^-/ {print $9}'
еще более короткий и более ясный путь.
Кто-то исправьте меня, если я неправ.:-)
ls
обычно не хорошая идея. Ваши приемы awk перестанут работать с именами файлов с пробелом в них, например. яркий пример
– Mat
23.06.2013, 21:53
Я нашел эти короткие пути:
ls -p uploads | grep -Ev '/'
или
ls -pIt_* uploads | grep -v /
Если вы используете lightdm для ведения журнала, но у вас нет GUI, вы можете запустить следующее:
sudo nano /etc/lightdm/lightdm.conf
Вы увидите строку autologin-user = username
, вы можете прокомментировать ее с помощью #
или просто удалить инструкцию username
.
После этого в командной строке запустите sudo service lightdm restart
или просто перезапустите компьютер.
В этом случае полное отключение раздела подкачки является хорошей идеей?
Да, вы можете перенести подкачки с жесткого диска/SDD в оперативную память. Последние ядра Linux включают модуль ZRAM внутри, поэтому вы можете использовать своп в ОЗУ. Это значительно повысит скорость операций замены, но в некоторых случаях увеличит загрузку ЦП.
Вы можете прочитать об этом на https://wiki.debian.org/ZRam
-121--108708-ls -l | grep -v ^d | grep name$
Легкий пирог:
ls -l --hide 't_*' <absolute path to desired directory> | grep -v ^d
-exec ls -lG -- {} +
в его ответе для получения вывода с помощью дополнительных опций для ls. Можно также добавить просто-ls
к этой находке для получения быстрого и грязного приближения подробного представления ls. – Caleb 02.07.2011, 12:12