使用Loop创建文件unix

时间:2014-02-10 14:01:14

标签: unix createfile

我有一个包含每天在UNIX中填充的87个文本文件的列表。

例如:FP * .txt ---文件名以FP&是txt文件 每日新内容会附加到最后。我想使用shell脚本备份所有文本文件并创建同名的空白文件。我尝试了以下内容。

echo "" > FP*.txt

> FP*.txt

两者都给出了同样的错误。

FP*.txt: ambiguous redirect

然而,当在单个文件上使用时,两者都工作正常。那么如何解决它。并且还创建一个硬编码名称列表不是一种选择,因为87太多而且未来可能会增加。

还有一些文件名包含(&,在其名称中。当尝试以下代码时,

echo "" > FP---Sample.txt

这很好用。但是在尝试时,以下错误。

echo "" > FP(1)---Sample.txt

这给出了错误。

  

意外令牌附近的语法错误`('

那么如何实现呢?

2 个答案:

答案 0 :(得分:0)

用引号括起文件名:

echo "" > "FP(1)---Sample.txt"

答案 1 :(得分:0)

你得到了

  

FP * .txt:模糊重定向

因为您只能重定向到一个文件,而FP*.txt会扩展为多个文件。这就是为什么它在扩展只返回一个名称时起作用。

要做你需要的,你最好循环FP*.txt的结果。例如,您可以使用:

bk_date=$(date "+%Y%m%d_%H%M%S")       # 20140210_150526 format of date
for file in FP*.txt
do
   cp -p "$file" "${file}.${bk_date}"  # make a backup of the file
   > "$file"                   # blank it. This is same as echo "" > "$file"
done

关于错误:

  

意外令牌附近的语法错误`('

Martin Dinov correctly explained您需要引用该名称以使其成为文件名的一部分。