shell 如何将文件夹中所有文件的内容(除第一行外)复制到目标文件?

6rvt4ljy  于 2023-03-03  发布在  Shell
关注(0)|答案(2)|浏览(133)

我在一个文件夹中有一堆文件。它们都以文件头开头。我想将所有文件的内容复制到一个文件中。我不想复制文件头。我编写了以下bash脚本

#!/bin/sh                                                                                                                                                                                                                                                                                                                                                                   

FILES=$1
DESTINATION=$2
files=(${FILES})
echo $files
for f in $files
do
    echo 'File '$f
    awk 'NR>=2' $f >> $DESTINATION
done

我用./copy.sh ./folder/*.csv newfile.csv调用这个文件。但是结果它只复制了第一个文件。特别是,我可以看到列表只包含一个文件。有什么建议吗?

wnavrhmk

wnavrhmk1#

不需要在bash中循环,因为awk可以处理多个文件,只需使用以下简化的脚本:

dest="$1"
shift

awk 'FNR > 1' "$@" > "$dest"

并将脚本调用为:

./copy.sh newfile.csv ./folder/*.csv
sf6xfgos

sf6xfgos2#

tail -q -n +2 ./folder/*.csv > newfile.csv
  • 男人的尾巴 *
-q, --quiet, --silent
     never output headers giving file names

-n, --lines=[+]NUM
     output the last NUM lines, instead of the last 10; 
     or use -n +NUM to output starting with line NUM

相关问题