С zsh
:
typeset -A files
for f (**/*(D.oL)) files[$f:t]=$f
printf '%s\n' $files
Будет работать, какие бы байты или символы (например, пробел, новая строка. ...), которые могут содержать имена файлов.
С инструментами GNU:
find . -type f -printf '%s/%f/%P\0' |
sort -zrn |
LC_ALL=C sort -zt/ -uk2,2 |
tr '\0\n' '\n\0' |
cut -d/ -f3- |
tr '\0' '\n'
Если вы хотите удалить дубликаты, с zsh
:
allfiles=(**/*(D.oL))
typeset -A best
for f ($allfiles) best[$f:t]=$f
bestfiles=($best)
dups=(${allfiles:|bestfiles})
rm -rf -- $dups
Описание некоторых возможностей zsh:
typeset -A best
: объявляет переменную ассоциативного массива, как в ksh93. Последние версии bash
также поддерживают его. **/*
: рекурсивный globbing. Введена в zsh в начале девяностых, сейчас встречается в некоторых других оболочках с вариациями. (D.oL)
: квалификаторы globbing. Еще одно изобретение zsh, пока не скопированное другими оболочками, хотя это важный спутник рекурсивного globbing. Используется для дополнительной квалификации глобуса. D
для включения точечных файлов,
для включения только обычных файлов, oL
для упорядочивания по длине (размер в байтах). ${file:t}
: как и в (t)csh, расширяет до tail части имени файла (основного имени). ${a:|b}
расширяется до элементов a
, которые не входят в b
. (a - b). Остановите все запущенные контейнеры Docker, а затем демон Docker. Переместите каталог «/var/lib/docker» в то место, где вы хотите хранить эти данные. Для вас это будет:
mv /var/lib/docker /data/
, а затем создайте символическую ссылку для этого каталога докеров в пути /var/lib:
ln -s /data/docker /var/lib/docker
Запустить демон Docker и контейнеры.
Документация Docker по управлению демоном Docker предлагает независимый от платформы способ сделать это:
отредактируйте файл /etc/docker/daemon.json, чтобы он содержал строку
{
"data-root": "/mnt/docker-data",
(...)
}
, где /mnt/docker-data
— это каталог, в котором вы хотите разместить образы и контейнеры Docker.
Тогда
sudo systemctl restart docker
Вы можете проверить, работает ли он, запустив
docker info
и найдите содержимое строки, начинающейся с Docker Root Dir:
.