我正在尝试获取某个扩展名的所有文件,重命名它们,将脚本应用于它们,然后再重命名它们。我遇到了一些奇怪的事情。
对于第一步,我正在尝试应用以下命令
for f in *.FDC; do mv $f ${f%FDC}FDCTMP1 done
对于.FDC类型的所有文件,我认为应该对它们应用mv函数,导致文件重命名为* .FDCTMP1。
当我尝试运行它时,命令行中的$变为>,我无法做任何事情。我过去遇到过这个问题而且我真的不知道发生了什么。每次发生这种情况我都要关闭我的putty实例并开始一个新实例。
下一步是将我的脚本应用于新重命名的.FDCTMP1文件。我不太确定我做对了,但这就是我正在尝试的事情:
for f in *.FDCTMP1; do more $f | a bunch of sed and awk stuff here
我最初使用更多文件名|来测试此脚本sed& awk的东西,并不是肯定我将如何改变该功能以在循环中获取每个文件名。
然后,我想应用与步骤1中相同的想法,再次重命名文件类型:
for f in *.FDCTMP1; do mv $f ${f%FDCTMP1}FDCTMP2 done
我想我提供了太多关于我的问题的信息,我认为主要问题是这部分:
for f in *.FDC;
如果相关,我就是kornshell
答案 0 :(得分:2)
提示从$ PS1更改为$ PS2,因为for
命令没有看到done
- 你在mv命令后丢失了一个分号:
for f in *.FDC; do mv $f ${f%FDC}FDCTMP1 done
#---------------------------------------^
听起来你不需要3个循环
for f in *.FDC; do
tmp1=${f}TMP1
mv "$f" "$tmp1"
# do stuff with "$tmp1"
mv "$tmp1" "${f}TMP2"
done
答案 1 :(得分:1)
在此命令行中:
for f in *.FDC; do mv $f ${f%FDC}FDCTMP1 done
你在done
之前错过了分号:
for f in *.FDC; do mv $f ${f%FDC}FDCTMP1; done
实际上,你编写的代码将三个参数传递给mv
,而shell仍在寻找done
作为命令的第一个单词。您可以单独在一行上键入done
,也可以在分号后(或在后台放置命令的&
之后)键入{{1}}。