gpt4 book ai didi

bash - 终端查找,目录最后而不是第一个

转载 作者:行者123 更新时间:2023-11-29 09:04:41 25 4
gpt4 key购买 nike

我有一个 makefile 将 JavaScript 文件连接在一起,然后通过 uglify-js 运行该文件以创建一个 .min.js 版本.

我目前正在使用这个命令来查找和连接我的文件

find src/js -type f -name "*.js" -exec cat {} >> ${jsbuild}$@ \;

但它首先列出目录中的文件,这很有意义,但我希望它列出 src/js 文件中的 .js 文件 目录之上以避免出现我的 undefined JS 错误。

有没有办法做到这一点或?我有一个谷歌周围,看到了 sort命令和 find-s 标志,但在这一点上它有点超出我的理解!

[编辑]

最终的解决方案与接受的答案略有不同,但它被标记为已接受,因为它让我找到了答案。这是我使用的命令

cat `find src/js -type f -name "*.js" -print0 | xargs -0 stat -f "%z  %N" | sort -n | sed -e "s|[0-9]*\ \ ||"` > public/js/myCleverScript.js

最佳答案

可能的解决方案:

  1. 使用 find 获取文件名和目录深度,即 find ... -printf "%d\t%p\n"
  2. 使用 sort -n 按目录深度对列表进行排序
  3. 从输出中删除目录深度以仅使用文件名

测试:

没有排序:

$ find folder1/ -depth -type f -printf "%d\t%p\n"
2 folder1/f2/f3
1 folder1/file0

排序:

$ find folder1/ -type f -printf "%d\t%p\n" | sort -n | sed -e "s|[0-9]*\t||"
folder1/file0
folder1/f2/f3

你需要的命令看起来像

cat $(find src/js -type f -name "*.js" -printf "%d\t%p\n" | sort -n | sed -e "s|[0-9]*\t||")>min.js

关于bash - 终端查找,目录最后而不是第一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20315388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com