2014-02-10 65 views
0

我有一个每天在UNIX中填充的87个文本文件的列表。例如:FP * .txt ---以FP开头的文件名&是txt文件 每日新内容会追加到尾部。我想使用shell脚本备份所有文本文件并创建同名的空白文件。我尝试了以下。使用循环创建文件unix

echo "" > FP*.txt 

> FP*.txt

俩给了同样的错误。

FP*.txt: ambiguous redirect 

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

还有些文件名包含(&,在他们的名字。当尝试下面的代码,

echo "" > FP---Sample.txt 

这工作得很好。但是当使用时以下给出错误。

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

这给了一个错误

syntax error near unexpected token `('

那么如何实现呢?

回答

0

用引号括文件名:

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

感谢名单对于该位.. – Debabrata

0

你得到一个

FP*.txt: ambiguous redirect

,因为你可以重定向到一个文件中,而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 

关于错误:

syntax error near unexpected token `('

Martin Dinov correctly explained,你需要引用的名称,使之成为文件名的一部分。

+0

thanxs ..这整理出来 – Debabrata

+1

好读的是,@Debabrata!既然你是新来的,如果你的问题已经解决了,请不要忘记标记答案。您可以点击答案旁边的复选标记将其从空心切换为绿色。如果您有任何疑问,请参阅[帮助中心>提问](http://stackoverflow.com/helpcenter/someone-answers)! – fedorqui