【问题标题】:bash selective copy folders and content to another locationbash 选择性地将文件夹和内容复制到另一个位置
【发布时间】:2014-08-13 21:36:32
【问题描述】:

我正在寻找一个 bash scrypt 来将一些文件夹和一些内容复制到另一个位置。我是一名教师,无论如何我对编程语言都非常陌生,我有这个导演结构

主要导演“学生”与子文件夹“约翰”;“雏菊”;“工作”等..有些文件夹包含特定文件,例如“exam.dat”,我需要一个scrypt来检查每个文件夹在学生中查找文件“exam.dat”并将该文件夹和该文件复制到另一个位置,而不复制文件夹或不包含exam.dat的文件夹中的其他文件。

希望我足够明确。提前谢谢你

【问题讨论】:

    标签: bash file copy find


    【解决方案1】:
    #!/bin/bash
    
    set -e
    
    if [[ $# -ne 1 ]]; then
        echo "usage: cpexams directory"
        exit 1
    fi
    
    DESTINATION=$1
    
    if [[ ! -d "${DESTINATION}" ]]; then
        echo "directory ${DESTINATION} does not exist!"
        exit 2
    fi
    
    for dir in *; do
        if [[ -d "${dir}" ]] && [[ -a "${dir}/exam.dat" ]]; then
            mkdir "${DESTINATION}/${dir}"
            cp "${dir}/exam.dat" "${DESTINATION}/${dir}/"
        fi
    done
    

    如果您想在同一个目标目录上重用脚本(意思是更新目标目录),请将mkdir 更改为mkdir -p

    【讨论】:

    • 解析 ls 在这里也完全没有必要,因为一个简单的* glob 就可以了。此脚本还假定它将从 Student 目录运行,最好是要求该目录并假定目标的本地目录或两者都要求。
    • 谢谢。修复了ls。除此之外,如果它不会从学生目录运行,则添加另一个 arg 作为 src 目录而不是 * 很容易。 @AlinDraghici 将管理。 :)
    猜你喜欢
    • 1970-01-01
    • 2013-07-16
    • 2022-12-05
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 2019-12-20
    相关资源
    最近更新 更多