Какие есть способы просмотра файлов в каталоге с несчетным количеством файлов?

Какую оболочку вы используете, я тестировал с помощью zsh, но bash даст тот же результат?

➜  ~ ssh localhost echo Hello world
Hello world
➜  ~ echo $?
0
➜  ~ ssh localhost error           
bash: error: command not found
➜  ~ echo $?
127
➜  ~ 

➜  ~ ssh localhost fake
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:vYFp+5TGBtJd9XgvTJdKbK2pQSFwARcnOHtAYWyCfCE.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/user/.ssh/known_hosts:1
  remove with:
  ssh-keygen -f "/home/user/.ssh/known_hosts" -R localhost
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
bash: fake: command not found
➜  ~ echo $?
127
1
03.03.2016, 13:40
3 ответа

Попробуйте следующее:

perl -le 'opendir $d,".";while($f=readdir($d)){print $f if $f =~ /^2016-02-20_01/}'

Это читает записи каталога напрямую и не пытается что-либо делать с ними как таковыми. Если вы действительно хотите просмотреть содержимое файла, вы можете использовать:

perl -le 'opendir $d,".";while($f=readdir($d)){if($f =~ /^2016-02-20_01/){print "=== $f ===";open(my $i,"<",$f);while(<$i>){print};close($i)}}'

EDIT: для пояснения, это предполагает, что вы уже вошли в каталог с помощью компакт-диска. (Точка относится к текущему каталогу). В противном случае замените "." с путем к каталогу.

0
27.01.2020, 23:35

find ./dirname -type f -name "2016-02-20_01*" может сработать, хотя это все равно не будет быстро.

Затем вы можете сделать:

find ./dirname -type f -name "2016-02-20_01*" -print | xargs grep -n "text_to_search"

1
27.01.2020, 23:35

С 'ls' у меня сложилось впечатление, что медлительность в основном вызвана сортировкой.

'ls -f' отключает сортировку, и по моему опыту (с ext3 и xfs несколько лет назад, когда я запускал nntp-сервер) работает намного быстрее.

1
27.01.2020, 23:35

Теги

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