Как прочитать файл и скопировать из одного файла в другой файл в оболочке script

Как прочитать файл и скопировать из одного файла в другой файл в оболочке 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

На самом деле существует одна пробная версия папки, внутри тестовой папки есть 4 текстовых файла. Я хочу открыть файл -file.txt. Внутри файлов file.txt есть 3 файла: test1.txt, test2.txt, test3.txt. В моей работе используется файл file.txt. Я прочитал все 3 имени файлов и скопировал их в другую папку. Поэтому для этого мне нужно открыть файл .txt, прочитать файл и распечатать 3 файла и только скопировать эти 3 файла не полную папку и скопировать эти 3 файла в другую папку "файлы", которая находится в том же каталоге.

Ответ 1

если вы хотите скопировать весь файл, как он есть,

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"

Ответ 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 

йо...