我是linux新手。我试图将文件从一个路径复制到另一个路径。我有一个文本文件,其中包含以下模式的所有文件名称:
file-1.txt
file-2.pdf
file-3.ppt
....
我使用以下代码创建了一个.sh
文件:
#!/bin/bash
file=`cat filenames.txt`;
fromPath='/root/Backup/upload/';
toPath='/root/Desktop/custom/upload/';
for i in $file;
do
filePath=$fromPath$i
#echo $filePath
if [ -e $filePath ];
then
echo $filePath
yes | cp -rf $filePath $toPath
else
echo 'no files'
fi
done
上面的代码只是将文本中的最后一个文件名而不是全部复制到目标路径。
请帮忙。
答案 0 :(得分:0)
循环一组输入行的正确方法是
while read i; do
: something with "$i"
done <filenames.txt
请注意在"$i"
周围使用双引号,并且通常是变量插值,其中字符串包含文件名组件。仅当您明确要求shell执行分词和通配符解析时,不带引号的值才适用。