首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >命令在40个不同目录中复制20000个小文件。

命令在40个不同目录中复制20000个小文件。
EN

Unix & Linux用户
提问于 2019-10-25 15:26:07
回答 1查看 91关注 0票数 -1

我这里有一个包含大约40个小文件的目录,并希望将它们复制到4个不同的目录中,按文件的数量分发。

下面是一个应该做什么的例子,40个文件被划分在每个10个文件的目录中。在每个目录中,每个目录的文件具有相同的时间戳分钟,其数量或分钟的标准如下:

代码语言:javascript
复制
schwaiger@ffurtpc:/home/schwaiger/files/$ ll
total 40
drwxr-xr-x  2 schwaiger schwaiger 36864 out 19 12:19 ./
drwxr-xr-x 52 schwaiger schwaiger  4096 out 19 14:05 ../
-rw-r--r--  1 schwaiger schwaiger 32229 out 19 09:18 00001-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32243 out 19 09:18 00002-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32243 out 19 09:18 00002-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32294 out 19 09:18 00004-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32267 out 19 09:18 00005-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32287 out 19 09:18 00006-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32294 out 19 09:18 00007-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32267 out 19 09:18 00008-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32287 out 19 09:18 00009-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32293 out 19 09:18 00010-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32298 out 19 09:17 00011-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32289 out 19 09:17 00012-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32298 out 19 09:17 00013-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32289 out 19 09:17 00014-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32308 out 19 09:17 00015-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32340 out 19 09:17 00016-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32308 out 19 09:17 00017-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32340 out 19 09:17 00018-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32329 out 19 09:17 00019-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32324 out 19 09:17 00020-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32300 out 19 09:20 00021-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32316 out 19 09:20 00022-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32315 out 19 09:20 00023-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32310 out 19 09:20 00024-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32319 out 19 09:20 00025-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32318 out 19 09:20 00026-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32341 out 19 09:20 00027-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32323 out 19 09:20 00028-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32341 out 19 09:20 00029-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32319 out 19 09:20 00030-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32350 out 19 09:22 00031-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32389 out 19 09:22 00032-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32289 out 19 09:22 00033-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32298 out 19 09:22 00034-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32318 out 19 09:22 00035-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32341 out 19 09:22 00036-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32243 out 19 09:22 00037-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32243 out 19 09:22 00038-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32289 out 19 09:22 00039-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32298 out 19 09:22 00040-capture.jpg

这应该是分布在10的目录中:

代码语言:javascript
复制
    schwaiger@ffurtpc:/home/schwaiger/files/a01$ ll
    total 10
    drwxr-xr-x  2 schwaiger schwaiger 36864 out 19 12:19 ./
    drwxr-xr-x 52 schwaiger schwaiger  4096 out 19 14:05 ../
    -rw-r--r--  1 schwaiger schwaiger 32229 out 19 09:18 00001-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32243 out 19 09:18 00002-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32243 out 19 09:18 00002-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32294 out 19 09:18 00004-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32267 out 19 09:18 00005-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32287 out 19 09:18 00006-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32294 out 19 09:18 00007-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32267 out 19 09:18 00008-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32287 out 19 09:18 00009-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32293 out 19 09:18 00010-capture.jpg

    schwaiger@ffurtpc:/home/schwaiger/files/a02$ ll
    total 10
    drwxr-xr-x  2 schwaiger schwaiger 36864 out 19 12:19 ./
    drwxr-xr-x 52 schwaiger schwaiger  4096 out 19 14:05 ../
    -rw-r--r--  1 schwaiger schwaiger 32298 out 19 09:17 00011-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32289 out 19 09:17 00012-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32298 out 19 09:17 00013-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32289 out 19 09:17 00014-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32308 out 19 09:17 00015-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32340 out 19 09:17 00016-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32308 out 19 09:17 00017-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32340 out 19 09:17 00018-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32329 out 19 09:17 00019-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32324 out 19 09:17 00020-capture.jpg

    schwaiger@ffurtpc:/home/schwaiger/files/a03$ ll
    total 10
    drwxr-xr-x  2 schwaiger schwaiger 36864 out 19 12:19 ./
    drwxr-xr-x 52 schwaiger schwaiger  4096 out 19 14:05 ../
    -rw-r--r--  1 schwaiger schwaiger 32300 out 19 09:20 00021-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32316 out 19 09:20 00022-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32315 out 19 09:20 00023-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32310 out 19 09:20 00024-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32319 out 19 09:20 00025-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32318 out 19 09:20 00026-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32341 out 19 09:20 00027-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32323 out 19 09:20 00028-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32341 out 19 09:20 00029-capture.jpg
    -rw-r--r--  1 schwaiger schwaiger 32319 out 19 09:20 00030-capture.jpg

schwaiger@ffurtpc:/home/schwaiger/files/a04$ ll
total 10
drwxr-xr-x  2 schwaiger schwaiger 36864 out 19 12:19 ./
drwxr-xr-x 52 schwaiger schwaiger  4096 out 19 14:05 ../
-rw-r--r--  1 schwaiger schwaiger 32350 out 19 09:22 00031-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32389 out 19 09:22 00032-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32289 out 19 09:22 00033-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32298 out 19 09:22 00034-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32318 out 19 09:22 00035-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32341 out 19 09:22 00036-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32243 out 19 09:22 00037-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32243 out 19 09:22 00038-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32289 out 19 09:22 00039-capture.jpg
-rw-r--r--  1 schwaiger schwaiger 32298 out 19 09:22 00040-capture.jpg

如何做到这一点,最好是用awksedegrep,甚至bash

EN

回答 1

Unix & Linux用户

发布于 2019-10-25 15:40:18

即使我不喜欢这样的问题,很明显,你只是在问之前一点都没有搜索过,这里是一个解决方案的开始:

代码语言:javascript
复制
for file in * ; do 
   dstdir=$(stat -c %X "${file}")
   if [ ! -d "${dstdir}" ]; then
       mkdir "${dstdir}"
   fi
   mv "${file}" "${dstdir}"
done

EDITED,因为OP完全改变了原来的问题

代码语言:javascript
复制
i=0
dstdir=0
for file in *; do
  if [[ "$((i++))" -gt 10 ]] ; then
    dstdir=$((dstdir + 1))
  fi  
  if [ ! -d "${dstdir}" ] ; then
     mkdir ${dstdir}
  fi
  mv $file ${dstdir}/
done

基本算法根据您的需要调整i测试。提醒$(( ))在bash中执行算术(不确定它是否与sh兼容)

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/548742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档