簡體   English   中英

對命令“查找”找到的文件進行排序

[英]sort files found by command 'find'

我的程序獲取文件列表,並根據文件給出的順序對其進行處理。 例如:

$ ./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 _ * ”(星號中我有一個整數) ,然后再通過“ parameterTwo * _”(星號再次 排序后,將文件傳遞到myScript.sh代表數值。

可能嗎?

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM