14

How to read a file and copy from one file to another file in shell script:

#!/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

Actually one folder trial is there, inside trial folder 4 text files are there. I want to open a file-'file.txt'. Inside file.txt 3 files names are there: test1.txt, test2.txt, test3.txt. My work is using file.txt file I have read all 3 files names and copy it to another folder. So for that I have to open file.txt, read the file and print 3 files and only copy these 3 files not full folder and copy these 3 files to another folder'files' which is in same directory.

2
  • 1
    Please try to improve your explanation and give some testN.txt examples. Commented Oct 23, 2013 at 11:54
  • 1
    cat filen1.txt >> file2.txt Use this command to copy from 1 file to another file simply. Commented Nov 18, 2016 at 8:14

2 Answers 2

39

if you want to copy entire file as it is then

cat filename >> newfilename

for three files

cat file1.txt file2.txt file3.txt >>file.txt

if you want to copy line by line then

while IFS= read -r line
do
echo "$line"
echo -e "$line\n" >>newfilename

done <"filename"
Sign up to request clarification or add additional context in comments.

Comments

2

try this, here test1 is you source folder, which will contail you files, and test2 is destination folder where you will move your files after reading..

#!/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 

or you can try this...

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 

yo...

1 Comment

It is correct but it is copy the full test1 folder not 3 text files.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.