首页 > 解决方案 > 使用 bash 将文件复制到另一个文件夹

问题描述

我有一个将 1000 个文件复制到另一个文件夹的脚本。但是,我有以以下结尾的文件:

'*' 不是名称的一部分,但有一些字符串代替它。

我想要的是为我上面提到的每种类型以一种聪明的方式复制 1000 个文件。


#!/bin/bash

for entry in /home/noor/popGen/sweeps/hard/final/*
do
    for i in {1..1000}
        do 
            cp $entry /home/noor/popGen/sweeps/hard/sample/hard
        done
done

是否有一种聪明的方法可以为每种类型复制所有 1000 个文件?一种方法是使用 if 语句,但我必须更改该 if 语句 10 次。

标签: bash

解决方案


下面的这个脚本将完成所需的任务。

file_count=0 
for i in {1..10};
do
for j in source/*_LINKED_$i.trees; 
    do
    file_count=$((file_count+1))
    echo "cp $j destination/"
    if ((file_count>1000)); 
        then    
            file_count=0
            break; 
    fi; 
done
done

外循环for i in {1..10}用于标记文件的类型(*_LINKED_$i.trees)。

内部循环将遍历每种类型的所有文件(例如:*_LINKED_1.trees*_LINKED_2.trees直到*_LINKED_10.trees)。然后它将前 1000 个文件(使用 设置file_count=1000)复制到该特定类型文件的目标位置。


推荐阅读