基於Perl的解決方案如下所示。
#!/usr/bin/perl
$source_dir = "./source";
$dest_dir = "./dest";
opendir ($source, $source_dir);
@source_files = readdir $source;
foreach $each_file (@source_files){
if($each !~ /^(\.|\.\.)$/) {
open $file_h , "< $source_dir/$each_file";
@contents = <$file_h>;
open $dest_file, ">>$dest_dir/$each_file";
print $dest_file @contents;
@contents =();
}
}
你也可以使用Shell腳本來做到這一點。一個典型的shell腳本將如下所示。
#!/usr/bin/sh
source='./source'
dest='./dest'
for file in `ls $source`
do
if [ -e $dest/$file ]
then
cat $source/$file $dest/$file >> $dest/$file."unique_name"
rm $dest/$file
mv $dest/$file."unique_name" $dest/$file
else
cp $source/$file $dest/$file
fi
done
您不能將輸入文件用作cat的輸出。
$ cat 1.fastq 1.fastq > 1.fastq
這會導致錯誤提示「input file is output file
」。
我認爲如果您編寫shell腳本而不是使用Perl打開和關閉文件,這會更容易。 – NigoroJr