我需要将目录中的所有文件连接到一个文件,但具有指定名称的文件必须位于输出的顶部。
只是在做cat * > result
将按字母顺序连接所有文件。
有什么办法告诉猫放置文件vars.css
或任何其他输出的开头?
现在我只是重命名文件需要首先000-filename
但我想知道是否有更好的解决方案而不重命名文件。
有很多方法可以实现此目的,其中大多数方法需要调用另一个程序来帮助生成文件列表(按首选顺序)。
仅使用 bash 实现此目的的一种方法(并假设您想要手动移动到前面的少量文件)是:
(GLOBIGNORE=vars.css && cat vars.css *)
如果您有多个文件要放在列表的前面,它们可以包含在 GLOBIGNORE 中:
(GLOBIGNORE=vars.css:other.file && cat vars.css other.file *)
GLOBIGNORE 环境变量告诉 bash 在扩展 glob 时忽略与这些模式匹配的文件(例如*
)。请参阅bash手册 https://www.gnu.org/software/bash/manual/bashref.html#index-GLOBIGNORE了解更多信息。
确保不会意外为 shell 的其余部分设置 GLOBIGNORE 非常重要(感谢 Tim 指出这一点)。您可以通过多种方式实现这一点,例如我上面通过将整个语句放在括号内来实现的。如果您在没有括号的情况下运行它,则应确保之后已取消设置 GLOBIGNORE:unset GLOBIGNORE
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)