Как скопировать файлы в цикле while после получения результатов, возвращаемых командой find? - PullRequest
0 голосов
/ 01 мая 2019
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file
       cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory

Я пытаюсь перебрать каждый отдельный файл с определенным расширением (например, txt) в системе, найденной командой find.Пока он просматривает каждый файл, я хотел бы проверить, существует ли уже существующий файл с таким же именем в желаемой директории пользователя.Иначе, он скопирует файл.Однако команда cp не работает.Это то, что я до сих пор:

find . -type f -name "*.$fileType"| while read file; do
    fname=`basename $file`
    echo $fname
    echo $file
    if [ -e "$path/$directory/$fname" ]; then
        echo "$fname exist"
    else
        cp $file $path/$directory
    fi
done

ERROR MESSAGE

1 Ответ

0 голосов
/ 01 мая 2019

Поскольку в ваших переменных есть пробелы, вы должны правильно заключить их в кавычки.

find . -type f -name "*.$fileType"| while read file; do
    fname="$(basename $file)"
    echo "$fname"
    echo "$file"
    if [ -e "$path/$directory/$fname" ]; then
        echo "$fname exist"
    else
        cp "$file" "$path/$directory"
    fi
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...