Как заменить sed и wc на awk? (подсчет имен в каталогах)

Читаю ваш вопрос; если вы хотите перенести файлы с Linux Server на виртуальную машину Windows на том же устройстве, вы можете использовать LINUX SCP/SFTP/FTPдля передачи, а для установки Windows — WinSCPдля их получения.

Думаю, я помогу вам изменить вопрос, чтобы получить больше ответов, которые вы хотите получить.

Протокол FTP (Основные команды)

WinSCP

3
27.12.2020, 14:01
1 ответ

Во-первых, ваше определение функции -лайнера неверно. Присутствие ключевое слово functionуказывает, что вы можете использовать Bash, и это что написано под Shell Function Definitionsв man bash:

function name [()] compound-command [redirection]

, а составная команда определяется как:

{ list; }

Так и должно быть:

function lsc { /bin/ls -l $1 | sed 1d | wc -l; }

Но даже если это технически правильно, это не будет работать должным образом, см. Почему не разбираетсяls(и что делать вместо этого )? .

Вы можете распечатать несколько файлов и каталогов в данном каталоге используя awk вот так:

awk 'END {print ARGC - 1}' *

но заметьте, что если хотя бы один из аргументов расширен с помощью оболочки в место *- это каталог, на который awk жалуется:

$ awk 'END {print ARGC - 1}' *
awk: warning: command line argument `dir1' is a directory: skipped

Но в любом случае, результат все еще в порядке, и вы можете перенаправить ошибки в /dev/ноль:

awk 'END {print ARGC - 1}' * 2>/dev/null
0
18.03.2021, 22:40

Теги

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