将目录中的所有文件都放在一个目录下,并以特定的文件开头和结尾……?

将目录中的所有文件都放在一个目录下,并以特定的文件开头和结尾……?

有没有办法获取cat给定目录中的所有文件,但以特定文件开头和结尾?

例如,假设我有:file1.js、file2.js、file3.js、file4.js、file5.js——实际上我想要cat file2.js file*.js file3.js > /var/www/output.js

我尝试了几种不同的方法

find ! -name "file2.js" ! -name "file3.js" -type f -exec cat file2.js {} file3.js > /var/www/js/output.js \;
find ! -name "file2.js" ! -name "file3.js" -type f | xargs -I files cat file2.js files file3.js > /var/www/output.js

但我能得到的最好的结果是在所有其他文件之前添加 file2.js 并在所有其他文件之后添加 file3.js (多次)

我知道我可以手动按照我想要的顺序指定文件,但这是不可维护的(我预计可能有> 100个文件)。

我浏览过man cat,以及一些专门的网站xargsfindcat无济于事。

提前致谢。

答案1

使用 bash 中的 extglob 选项你可以做到这一点:

$ shopt -s extglob
$ cat file2.js !(file[23].js) file3.js > /var/www/output.js

相关内容