如何将文件头复制到其他文件而不会丢失bash中的换行符?

时间:2014-03-16 10:08:22

标签: bash echo head

我得到的是这样的:

working_dir
|-- samples
|-- table1.tbl
|-- table2.tbl
|-- table3.tbl

我想拥有的是这样的:

working_dir
|-- samples
|   |-- table1.tbl
|   |-- table2.tbl
|   |-- table3.tbl
|-- table1.tbl
|-- table2.tbl
|-- table3.tbl

samples目录中的.tbl文件将包含根目录中这些.tbl文件的前10行。

我试过

for FILE in `ls *.tbl`; do
  NEWFILE="samples/$FILE"
  if [ ! -f "$NEWFILE" ] ; then
      touch "$NEWFILE"
  fi
  echo `head $FILE` > $NEWFILE
done

samples下的.tbl文件中的换行符丢失,10行中的内容被压缩到每个.tbl文件中的一行。

有任何帮助吗?感谢。

2 个答案:

答案 0 :(得分:7)

for FILE in *.tbl; do
  head "$FILE" > "samples/$FILE"
done

你的问题是由回音和反引号引起的。反引号将输出展平为一行,echo只输出该单行。

答案 1 :(得分:0)

你可以尝试这个:

#!/bin/bash

LIST=/path/to/file
find /absolute/path/to/dir -name "*.tbl" > /path/to/file

for FILE in $(cat /path/to/file); do
    head "$FILE" > "/path/to/sample/$FILE"
done