[英]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代表數值。
可能嗎?
parameterOne
和parameterTwo
之前的部分不包含字符_
,您可以簡單地使用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.