从每个子目录复制一个文件(随机选择)?

问题描述 投票:0回答:2

我有一个嵌套的目录结构,最底层是.jpg文件的文件夹。我想从这个结构中的每个子目录中取出一个 .jpg 文件(有数千个)。我该怎么做?

我可以复制所有文件,但不仅仅是其中的一个子集。

bash unix subdirectory
2个回答
1
投票

从许多子目录中的每一个中抓取一个随机文件:

find . -type d -links 2 -exec /bin/bash -c '
  dest=$1 ; shift
  for dir ; do
    cp "$( shuf -en1 "$dir"/*.jpg )" "$dest"
  done
' _ "$dest" {} +
  • find . -type d -links 2
    搜索没有子目录的目录
  • 这些目录被传递给一个 bash shell,它使用
    shuf
    从每个目录中选择一个 jpg 并将其复制到目标文件夹

0
投票

只要您的文件和目录名称不包含换行符,这样的东西(未经测试)应该可以工作:

find . -type f -name '*.jpg' -print |
    shuf |
    awk '{dir=$0; sub("/[^/]+$","",dir)} !seen[dir]++' |
    xargs -I {} cp {} /some/directory
© www.soinside.com 2019 - 2024. All rights reserved.