gpt4 book ai didi

linux - 如何为 `n` 列出的每个文件查找下一个 `n+1` 文件和 `ls -1` 文件

转载 作者:太空宇宙 更新时间:2023-11-04 10:42:07 24 4
gpt4 key购买 nike

关闭。这个问题需要更多 focused .它目前不接受答案。












想改进这个问题?更新问题,使其仅关注一个问题 editing this post .

6年前关闭。




Improve this question




在目录中,对于 ls -1 . 列出的每个文件在默认的字典顺序中,我想执行以下操作

  • 查找下一个n从文件开始并包含文件的文件,将它们放入名为 train 的数组中, 并将它们复制到子目录 tmp .
  • 查找 n+1 -th 文件,将其放入名为 test 的变量中
  • train 执行一些操作, test , 和 tmp .删除 tmp 中的文件.
  • traintest被重复使用,并且应该被 ls 列出的每个文件覆盖.
    tmp在对 ls 列出的每个文件开始上述步骤之前应该是空的.

    除最后一个 n 之外的每个文件都执行这三个步骤。 ls 列出的文件, 因为没有 n+1 -th 文件从它们中的每一个开始。

    我想知道如何在bash中实现上述内容?谢谢。

    例如 ,

    假设 n为 2, ls 列出的文件在当前目录中有:
    a
    b
    c
    d
    e
    f

    对于 a , 我会找到 ab并将它们放入数组 train并将它们复制到目录 tmp , 并找到 c并将其放入变量 test .然后对 train进行一些操作, testtmp .最后,清空目录 tmp .

    对于 b , 我会找到 bc , 并将它们放入数组 train通过覆盖它,并将它们复制到目录 tmp , 并找到 d并将其放入变量 test通过覆盖它。然后对 train进行一些操作, testtmp .最后,清空目录 tmp .

    然后在 c上进行上述操作和 d ,但不在 e 上和 f , 因为 n =2。

    最佳答案

    这是一个实际上并没有复制或删除任何内容的示例,

    #!/bin/bash    
    n=3
    files=( $(ls -1) ) # Store list of files in array variable "files"
    limit=$(( ${#files[*]} - $n - 1 )) # All but last n+1 files.

    echo mkdir -pv tmp

    for i in $(seq 0 $limit)
    do
    j=$(( $i + $n )) # I put the index in a separate variable for clarity.
    test=${files[$j]}
    train=(${files[@]:$i:$n})
    echo cp -v ${train[*]} tmp/
    echo do_something $test, ${train[*]}, tmp/
    echo rm -vf tmp/*
    done

    引用...
  • https://www.gnu.org/software/bash/manual/bashref.html#Arrays
  • https://www.gnu.org/software/bash/manual/bashref.html#Arithmetic-Expansion
  • https://www.gnu.org/software/bash/manual/bash.html#Shell-Parameter-Expansion
  • http://linux.die.net/man/1/seq
  • 关于linux - 如何为 `n` 列出的每个文件查找下一个 `n+1` 文件和 `ls -1` 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34645029/

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