通过find命令返回结果后,如何在while循环中复制文件?

时间:2019-05-01 03:06:25

标签: linux bash shell operating-system command-prompt

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

我试图在find命令找到的系统中循环访问每个具有特定扩展名(例如:txt)的文件。当它循环遍历每个文件时,我想检查用户所需目录中是否已经存在一个具有相同名称的文件。否则,它将复制文件。但是,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 :(得分:0)

由于变量中有空格,因此应正确将其用引号引起来。

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