我有一个包含每天在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
这给出了错误。
意外令牌附近的语法错误`('
那么如何实现呢?
答案 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您需要引用该名称以使其成为文件名的一部分。