Bash скрипт для проверки наличия файла в другом каталоге (подкаталог incld) - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь написать скрипт для сравнения файлов в одном каталоге с другим (включая подкаталоги) и посмотреть, существуют ли они. Пока у меня есть:

#!/bin/sh

# This will compare files in 'dropbox>camera uploads' against pics in local 'pictures' folder.
# If present they are moved to 'duplicate' folder if not to 'not_duplicate' inside dropbox
#
# Mar '20
#
#

DROPBOX_LOC="/home/unencrypted/Dropbox/CameraUploads"
DROPBOX_LOC_DUPLICATE="/home/unencrypted/Dropbox/CameraUploads/duplicate"
DROPBOX_LOC_NOT_DUPLICATE="/home/unencrypted/Dropbox/CameraUploads/not_duplicate"
PICS_LOC="/home/user/Pictures"

for file in $DROPBOX_LOC/*
# NOTE: Use of " " preserves whitespace in single variable!

do
    echo "Checking for: $file"
    #ls -l $file

   if [[ -f "$PICS_LOC/${file##*/}" ]]
        then
        echo "$file is a duplicate"
        # Move to duplicate folder
        continue
     else
        echo "$file is a NOT a duplicate"
        # Move to not duplicate folder
        fi
done
exit 0

Но это возвращает:

Checking for: /home/unencrypted/Dropbox/CameraUploads/2015-11-07 16.58.49.jpg
./delete_dropbox_pics.sh: 22: ./delete_dropbox_pics.sh: [[: not found
/home/unencrypted/Dropbox/CameraUploads/2015-11-07 16.58.49.jpg is a NOT a duplicate

Может кто-нибудь предложить, пожалуйста, исправление (в том числе как искать в подкаталогах)?

1 Ответ

0 голосов
/ 27 апреля 2020

Почему бы не использовать команду diff.

diff -r <directory1> <directory2>

-r, --recursive рекурсивно сравнивать любые найденные подкаталоги

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...