如果文本文件中存在名称,则从目录复制文件

如果文本文件中存在名称,则从目录复制文件
#!/bin/bash

while IFS='' read -r line || [[ -n "$line" ]]; do
    cd /home/Sud/Minimal\ Packages/All/
    if [ -d $line ]
    then
        cp $line*.rpm /home/Sud/NewFolder/rpms/
    else
        echo $line>>/home/Sud/NewFolder/notfound.txt
    fi
done < "$1"

我正在尝试运行上面的代码

  1. 逐行读取文本文件
  2. 如果存在同名目录,则搜索文件夹
    • A)如果是;将该目录的内容复制到另一个目录
    • b)如果没有,请将目录名称复制到另一个文本文件。

每次我运行脚本时,它都会复制所有名称,notfound.txt即使它们存在于我正在搜索的文件夹中。

我哪里错了?

答案1

您能否尝试将 的所有用法都$line放在双引号中以正确处理空格?

#!/bin/bash
while IFS='' read -r line || [[ -n "$line" ]]; do
cd /home/Sud/Minimal\ Packages/All/
if [ -d "$line" ]
then
    cp "$line*.rpm" /home/Sud/NewFolder/rpms/
else
    echo "$line" >> /home/Sud/NewFolder/notfound.txt
fi
done < "$1"

答案2

if cp "$line"*.rpm destination/ ; then
    echo $line "successful!"
else
    echo $line "not found!"
    echo "$line">> /home/Sud/notfound.txt
fi

这对我有用。

相关内容