linux for:在gnome终端上找不到命令?

dtcbnfnu  于 2023-03-01  发布在  Linux
关注(0)|答案(1)|浏览(370)

长话短说:我有一个文件夹,里面有1583个.tar文件。每个.ta r文件只包含一个文件夹,我想要一个只包含这些文件夹的文件夹。尝试使用控制台命令来完成这个操作,因为我不知道如何让python为我完成这个操作。通过在线阅读,我想出了下面的命令

for file in ls *.tar do; do tar -xzf $file -C /path/to/destination/folder done

出现错误:

for: command not found

不知道该怎么办。无论我在哪里看如何让for循环在linux终端中工作,到处都在说"
写入for x; do y
却没有关于如何让那些东西真正发挥作用的建议。
我听到了很多关于linux bash和脚本之类的东西......我真的不明白所有这些东西是什么。我需要执行一些仪式来让bash工作吗?显然ls和cd之类的东西也是bash的一部分?这些对我来说工作得很好,但是for循环不是......
对不起,如果这是真的基本的家伙,我是一种计算机文盲。
谢谢你的帮助!

好吧,它要求我写2节,我想出了以下后,我已经写了上面:
如前所述,我已经提出了以下命令

for file in ls *.tar do; do tar -xzf $file -C /path/to/destination/folder done

手动使用tar -xzf工作得很好,甚至可以把它放在正确的文件夹中。但我不想只手动操作(因为有1500多个文件),而且tar命令不会将*.tar作为输入-我查找了如何解决这个问题,并得到了我试图用作修复的命令。
再次感谢!!
裘德

ep6jt1vc

ep6jt1vc1#

命令中有一些语法错误。但是bash应该理解for。您确定您使用的是bash而不是cshtcsh吗?
为了确保(出于测试目的),您只需键入

bash

这会让你开始害羞。
至于语法错误:该命令可能应为:

for file in *.tar ; do tar xzf "$file" -C /path/to/destination/folder ; done

另一方面,如果你想继续使用你的(t)csh,它应该是这样的:

foreach file ( *.tar )
tar xzf $file -C /path/to/destination/folder
end

相关问题