14

シェルスクリプトでファイルを読み取り、あるファイルから別のファイルにコピーする方法:

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

実際には 1 つのフォルダー試用版があり、試用版フォルダー内には 4 つのテキスト ファイルがあります。ファイル「file.txt」を開きたい。file.txt 内には、test1.txt、test2.txt、test3.txt の 3 つのファイル名があります。私の仕事はfile.txtファイルを使用しています。3つのファイル名すべてを読み取り、別のフォルダーにコピーしました。そのためには、file.txtを開き、ファイルを読み取って3つのファイルを印刷し、これらの3つのファイルのみをフルフォルダーではなくコピーし、これらの3つのファイルを同じディレクトリにある別のフォルダー「files」にコピーする必要があります。

4

2 に答える 2

39

ファイル全体をそのままコピーしたい場合

cat filename >> newfilename

3 つのファイルの場合

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

行ごとにコピーしたい場合

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

done <"filename"
于 2013-10-23T12:01:40.553 に答える
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 

よ...

于 2013-10-23T11:57:56.243 に答える