Я думаю, вы почти получили его. Вы можете использовать базовое имя «$ 0»
до найти имя сценария внутри сценария и распечатать счетчик строк всего, кроме
#!/bin/bash
if [ $# -eq 0 ]
then
for k in *
do
if [[ ! -d "$k" && "$k" != `basename "$0"` ]]
then
wc -l "$k"
fi
done
else
for k in $*
do
wc -l "$k"
done
fi
Я взял на себя смелость
k
вместо l
(не рекомендуется для имен переменных, я почти уверен, но не могу найти ссылку (ее можно спутать с 1
, I
)) echo
, как указал @Serg. РЕДАКТИРОВАТЬ Я добавил двойные скобки и тест для каталогов, чтобы игнорировать их, в условное выражение if
.
В bash
для всех файлов в папке.
for name in *; do mv "$name" "${name// /_}"; done
$ {name / pattern / replace}
заменяет шаблон
на replace
( Bash Parameter Expansion ). Если шаблон начинается с /
(здесь шаблон /
+ Пробел
), он заменяет все вхождения. Затем mv
переименовывает файл из name
в новое имя с замененными пробелами.