Что означает выделение каталогов горчичным цветом?

(Примечание:rsync --remove-source-files— это команда, которую я искал, за исключением того, что она не проверяет данные.)

Что касается бинарного сравнения,Я обнаружил, что diffможет сделать это:

В исходном каталоге:

for f in *.jpg; do diff $f "/path/to/destination/$f"; done

Это сравнивает двоичные файлы в источнике и месте назначения. Нет вывода = файлы не отличаются.

Это можно использовать для проверки данных.

Так как diffвозвращает 0в случае отсутствия различий, можно сделать

for f in *.jpg; do diff $f "/desination/$f" && rm $f; done

Это удалит файл $fв исходной папке, если diffвозвращает 0, т.е. файлы бинарные одинаковые.

Было бы полезно сделать так, чтобы это выглядело как новая команда, назовем ее verify-rm.

Поскольку у меня установлен Dropbox, я собираюсь поместить свои скрипты в папку Dropbox, чтобы мне не пришлось беспокоиться об их резервном копировании, когда я -переустанавливаю свою ОС через 6 месяцев...

$ cd ~/Dropbox && mkdir my-scripts && cd my-scripts
$ vim verify-rm

Вот мой verify-rmскрипт:

if [ "$#" -lt 2 ];
then
    echo "Bad arguments, use like cp command"
else
    success=0
    fail=0
    error=0
    for arg in ${@:1:$(($#-1))}
    do
        #echo "$arg ${@:(-1):1}"
        diff "$arg" "${@:(-1):1}"
        ret=$?
        if [ $ret -eq 0 ]
        then
            success=$((success+1))
            echo "Verified file $arg"
            rm $arg
        elif [ $ret -eq 1 ]
        then
            fail=$((fail+1))
            echo "Binary files $arg and ${@:(-1):1} differ"
        else
            error=$((error+1))
            echo "diff exited with error: code=$ret"
        fi
    done
    echo "Summary: $success files verified and ok"
    echo "         $fail files differ!"
    echo "         $error errors"
    echo "Files which differ not removed"
    echo "Files where diff returned error code not removed"
fi

Сделать скрипт исполняемым

$ chmod +x verify-rm

Затем использовать новый скрипт ("команда")

$ verify-rm /path/to/source/*.jpg /path/to/destination

Я заметил, что файлы с пробелами в имени файла обрабатываются неправильно, так как bash рассматривает каждый набор символов между пробелами как отдельный аргумент. Я не уверен, что с этим делать, и можно ли это исправить.

Тем не менее, в комментариях было указано, что rsync --remove-source-filesтакже будет работать, и rsyncработает правильно, когда в именах файлов есть пробелы, и я заметил, что это также намного быстрее, поэтому я бы рекомендуем просто использовать rsync.

1
14.09.2019, 18:32
1 ответ

Из справочной страницы BSD ls:

 LSCOLORS        The value of this variable describes what color to use for which attribute when colors are enabled with CLICOLOR.  This string is a concatena-
                 tion of pairs of the format fb, where f is the foreground color and b is the background color.

                 The color designators are as follows:

                       a     black
                       b     red
                       c     green
                       d     brown
                       e     blue
                       f     magenta
                       g     cyan
                       h     light grey
                       A     bold black, usually shows up as dark grey
                       B     bold red
                       C     bold green
                       D     bold brown, usually shows up as yellow
                       E     bold blue
                       F     bold magenta
                       G     bold cyan
                       H     bold light grey; looks like bright white
                       x     default foreground or background

                 Note that the above are standard ANSI colors.  The actual display may differ depending on the color capabilities of the terminal in use.

                 The order of the attributes are as follows:

                       1.   directory
                       2.   symbolic link
                       3.   socket
                       4.   pipe
                       5.   executable
                       6.   block special
                       7.   character special
                       8.   executable with setuid bit set
                       9.   executable with setgid bit set
                       10.  directory writable to others, with sticky bit
                       11.  directory writable to others, without sticky bit

                 The default is "exfxcxdxbxegedabagacad", i.e. blue foreground and default background for regular directories, black foreground and red back-
                 ground for setuid executables, etc.

The default is "exfxcxdxbxegedabagacad"

Вышеупомянутое означает, что «11. каталог, доступный для записи другим, без липкого бита» будет acили черным передним планом с зеленым фоном.

Обратите внимание, что все каталоги, выделенные горчичным цветом в вашем примере, доступны для записи другим пользователям, а не выделенные -каталоги — нет.

2
27.01.2020, 23:30

Теги

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