gpt4 book ai didi

linux - 对命令 'find' 找到的文件进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:03:27 25 4
gpt4 key购买 nike

我的程序获取文件列表并根据文件的给定顺序处理它们。例如:

$ ./myScript.sh --takeFiles a b c d e f g

现在,由于我必须传递大量文件,我使用 find 命令并指定如何找到我想要的确切文件:

sudo find . -path "./aFolder/*_parameterOne_*_*/*_parameterTwo_*_*/*_someCommonString_*" ! -name "*_aStringToExclude*" -exec ./myScript.py --takeFiles {} +

它就像一个魅力,除了我会在通过“parameterTwo_*首先排序之后将我的文件传递给 myScript.sh(在星星中我有一个整数) 然后通过“parameterTwo*_”,其中星号再次代表数值。

这可能吗?

最佳答案

parameterOneparameterTwo之前的部分不包含字符_,可以简单的使用sort :

find ... -print0 |
sort -z -t_ -k6n -k3n |
xargs -r0 ./myScript.py --takeFiles

更新:更复杂的解决方案可能如下所示。但是,我认为在 Python 脚本中对路径名进行排序会更容易。

#! /bin/bash
find ... -print0 |
while IFS= read -r -d '' pathname; do
[[ "$pathname" =~ "_parameterOne_"([0-9]+).*"_parameterTwo_"([0-9]+) ]] &&
printf '%05d%05d %s\0' "${BASH_REMATCH[2]}" "${BASH_REMATCH[1]}" "$pathname"
done |
sort -z |
while IFS= read -r -d '' pathname; do
printf '%s\0' "${pathname#* }"
done |
xargs -r0 ./myScript.py --takeFiles

关于linux - 对命令 'find' 找到的文件进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16858013/

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