объединение ответ для tail:
tail -f file | sed 's/\\n/\n/g'
с опцией -l в multitail:
multitail -l "tail -f file | sed 's/\\\n/\\n/g'"
обратите внимание: дополнительный escape на \n
дополнительная подсказка:
(раскрасит все файлы и объединит их в одно окно multitail):
multitail -C fileUNfiltered -L "tail -f file | sed 's/\\\n/\\n/g'"
ls -qAi | awk '{print $1}' | sort | uniq -d | wc -l
Это подсчитывает иноды, которые дублируются в текущем каталоге(по одному, замените -d
на -D
для подсчета всех вхождений ), поэтому не считая жестких ссылок, где все остальные ссылки живут вне текущего каталога. .
и ..
исключены. Замените -A
на -a
, чтобы добавить их обратно (, хотя очень маловероятно, что они все равно будут иметь жесткие ссылки в текущем каталоге ).
Может быть и более короткий путь, но это очень показательно.
Мистер Пайп |
— ваш друг.
(man
тоже)
Удачи!
Учитывая среду Linux, вы можете использовать команду stat
для каждого файла и запрашивать количество ссылок. Вы можете решить, хотите ли вы включить или исключить файлы с точкой -из подсчета с помощью shopt -s dotglob
. В приведенном ниже цикле я намеренно пропускаю каталоги.
shopt -s dotglob
i=0
for f in./*
do
[ -d "$f" ] && continue
if [ $(stat -c %h "$f") -gt 1 ]
then
i=$((i+1))
fi
done
В качестве альтернативы, с помощью GNU find:
find. -maxdepth 1 \! -type d -links +1 -printf. | wc -c
Это запрашивает find
поиск, начиная с текущего каталога(.
):
-maxdepth 1
)! -type d
, где !
экранирован из оболочки).
)Сzsh
:
(){echo $#} *(NDl+1)
Обратите внимание, что здесь не учитываются .
и ..
.
Если вы не хотите считать каталоги (, которые в большинстве файловых систем всегда являются жесткими ссылками ), измените на *(NDl+1^/)
.
(){echo $#}
анонимная функция, которая выводит количество аргументов *(...)
глобус с квалификаторами глобус N
:включить nullglob
для этого глобуса (расширить до нуля, если совпадений нет)D
:включить dotglob
для этого шара (включает скрытые файлы, но никогда .
и..
)l+1
:выбирать файлы с количеством ссылок строго больше 1. ^/
:исключить файлы типа каталог . Эквивалент POSIX:
find.//. ! -name. -prune -links +1 | grep -c //
(добавьте ! -type d
после -prune
, чтобы исключить каталоги ).
Или сls
:
(export LC_ALL=C; ls -Aqn | awk 'NR > 1 && $2 > 1 {n++}; END {print n}')
Чтобы исключить каталоги, добавьте && $1 !~ /^d/
после $2 > 1
.
Я использовал следующую строку -, чтобы найти файл с наибольшим количеством жестких ссылок:
find. -type f -exec ls -l {} \; | sort -nrk 2 | head -n 1
Надеюсь, это поможет всем, кто ищет то же самое.