如何在shell脚本中读取文件并从一个文件复制到另一个文件:
#!/bin/csh -f
echo ---file.txt---
cat file.txt
echo ######## file.text is opened ########
#set file_1="export/home/caratins/trial/file.txt"
while read line
do
echo "$line"
cp file.txt files
done<file.txt
实际上有一个文件夹试用版,里面有试用文件夹4个文本文件。我想打开一个文件''file.txt'。在file.txt里面有3个文件名:test1.txt,test2.txt,test3.txt。我的工作是使用file.txt文件我已经读取了所有3个文件名并将其复制到另一个文件夹。因此,我必须打开file.txt,读取文件并打印3个文件,只复制这3个文件而不是完整文件夹,并将这3个文件复制到同一目录下的另一个文件夹“文件”。
答案 0 :(得分:35)
如果你想复制整个文件,那么
cat filename >> newfilename
三个文件
cat file1.txt file2.txt file3.txt >>file.txt
如果你想逐行复制
while IFS= read -r line
do
echo "$line"
echo -e "$line\n" >>newfilename
done <"filename"
答案 1 :(得分:2)
试试这个, 这里test1是你的源文件夹,它会包含你的文件, 和test2是目标文件夹,您将在阅读后移动文件..
#!/bin/sh
cd test1;
echo "list of files:";
ls;
for filename in *;
do echo "file: ${filename}";
echo "reading..."
exec<${filename}
value=0
while read line
do
#value='expr ${value} +1';
echo ${line};
done
echo "read done for ${filename}";
cp ${filename} ../test2;
echo "file ${filename} moved to test2";
done
或者你可以试试这个......
ls;
echo "reading main file...";
filenames="filenames";
exec<${filenames}
while read name
do
echo "file: ${name}";
echo "reading..."
cd test1;
exec<${name}
value=0
while read line
do
#value='expr ${value} +1';
echo ${line};
done
echo "read done for ${name}";
cp ${name} ../test2;
cd ..;
echo "file ${file} moved to test2";
done
...哟