bash:连接除一个目录之外的每个文件

时间:2014-07-02 10:36:41

标签: bash file

大家好,感谢您的时间!

我有一个包含n个文件的目录。我需要在另一个专用目录中将除第一个文件之外的所有文件连接到" group1",然后将除第二个文件以外的所有文件连接到" group2"等

我试过了:

for f in dir/*
do
    cat !($f) > otherdir/group$f
done

但似乎猫没有这样做,因为我得到语法错误:(我很乐意翻译我语言中给出的错误)

syntax error near unexpected symbol : (
line : cat !($f) > otherdir/group$f

我还尝试通过先将所有需要的文件复制到某处,连接,然后删除它们来解决。但由于它必须使用大量的多个文件,我更喜欢不必编写无用的文件。

谢谢!

1 个答案:

答案 0 :(得分:4)

您需要先设置extglob

shopt -s extglob
cd dir
for f in *
do
    cat !("$f") > "../otherdir/group$f"
done

extglob是必需的,因为!($f)被称为扩展的glob模式,默认情况下未设置。有关man bash

的详细信息,请参阅extglob