Bash脚本将目录结构从源目录复制到目标目录

兴业银行

我对Bash编写非常陌生,并且要进行一些练习,我试图编写一个包含源目录和目标目录的脚本。该脚本将搜索源目录并将其子目录结构复制到目标目录(所有文件将被忽略,仅目录本身将被复制)。源目录可以在任意深度具有任意数量的子目录。实现此目标的最佳方法是什么?我首先尝试编写一个递归函数,如果找到目录,则在该目录上递归调用该函数。但是,由于我缺乏脚本编写经验,所以我很沮丧。

这是我到目前为止的内容:

#! /bin/bash

if [ ! $# -eq 2 ]; then 
    echo "ERROR: Script needs 2 arguments: $0 source/directory/ target/directory/"
    exit
fi

SOURCE_DIR=$1
TARGET_DIR=$2

function searchForDirectory {
    for FILE in ls $SOURCE_DIR/*; do #should be 'ls *current_directory*'
        if [ -d $FILE ]; then
            searchForDirectory #call function recursively onto $FILE
            #Do stuff here to create copy of this directory in target dir
        fi
    done
}

if [ ! -d $SOURCE_DIR ]; then 
    echo "ERROR: Source directory does not exist"
    exit
else
    searchForDirectory
fi

我知道这只是一个基本功能,需要做很多工作,但是我只是在寻找进一步的指导,以了解这是否是正确的解决方法,然后再继续。如果是这样,我的下一步是什么?如何将目录传递到函数中?

编辑:这是我的解决方案,感谢下方Ivan的帮助/ bin / bash

if [ ! $# -eq 2 ]; then 
    echo -e "\nERROR: Script needs 2 arguments:\n$0 source/directory/ target/directory/\n"
    exit
fi

function recursiveDuplication {
    for file in `ls $1`; do
        if [ -d $1/$file ] && [ ! -d $2/$file ]; then
            mkdir $2/$file
            recursiveDuplication $1/$file $2/$file
        elif [[ $1/$file == *.png ]]; then
            convert $1/$file $2/$file
        fi
    done
}

if [ ! -d $1 ]; then 
    echo -e "\nERROR: $1 does not exist\n"
    exit
elif [ -d $2 ] && [ ! -w $2 ]; then
    echo -e "\nERROR: You do not have permission to write to $2\n"
    exit
elif [ ! -d $2 ]; then
    echo -e "\nSUCCESS: $2 has been created"
    mkdir $2
fi

recursiveDuplication $1 $2

此解决方案有两个问题:

  1. 正如Rany Albeg Wein在下面解释的那样,使用'ls'并不是一个很好的解决方案-我已经知道了为什么目录/*.png名称中有空格。

  2. 我还尝试将任何* .png文件从源复制到目标,并将其转换为目标中的* .jpg图像。我怎样才能做到这一点?我正在尝试使用ImageMagick的convert image.png image.jpg命令,但是当image.png被称为时不知道该怎么做$file

伊万
#!/bin/bash
# 1st argument - source dir, 2nd - destination

function rrr {
  for i in `ls $1`
  do
    if [ -d $1/$i ]
    then
      mkdir $2/$i
      rrr $1/$i $2/$i
    fi
  done
}


rrr $1  $2

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何仅将最新的子目录复制到目标Linux Shell脚本

来自分类Dev

使用Maven将多个资源目录复制到独立的目标目录

来自分类Dev

将多个源目录构建到同一目标目录中

来自分类Dev

将来自不同位置和名称的文件复制到一个目标目录中

来自分类Dev

Bash:将文件复制到最新目录

来自分类Dev

将所有内容从源目录复制到新目录Delphi EX7

来自分类Dev

将源目录的内容复制到名称相同但大小写不同的目标目录

来自分类Dev

Powershell复制到-如果存在目标目录,则复制到现有目录中

来自分类Dev

NuGet软件包目标-如何在构建时将文件复制到目标目录的子文件夹?

来自分类Dev

如何使用Dockerfile中的单个COPY层在不同的源目录和目标目录中复制多个文件

来自分类Dev

VLC bash转码脚本目标目录

来自分类Dev

将mp3复制到目标目录,维护目录结构并在复制完成后删除文件

来自分类Dev

tar的目标目录结构与原始目录结构不同

来自分类Dev

我可以使用Git Bash将脚本从另一个目录复制到工作目录吗?

来自分类Dev

在磁盘上找到一堆随机排序的图像,然后复制到目标目录

来自分类Dev

将html文件从源目录复制到构建目录

来自分类Dev

将所有内容从源目录复制到新目录Delphi EX7

来自分类Dev

将目录列表复制到目标目录的优雅方法

来自分类Dev

使用文件结构将所有文件从源目录复制到C#中的目标目录

来自分类Dev

将文件列表从grep命令复制到目标目录

来自分类Dev

Shell脚本,用于将文件从源目录移动到目标目录

来自分类Dev

将文件从多个子目录复制到同一目标目录

来自分类Dev

目标目录存在时,使用命令cp -rsf复制源目录

来自分类Dev

将目录结构复制到枚举的文件夹

来自分类Dev

使用gradle将源目录列表下的文件复制到目标目录

来自分类Dev

Maven:将本地jar复制到目标目录

来自分类Dev

如何将目录层次结构(省略文件)复制到其他目录中?

来自分类Dev

将数据从嵌套的源目录复制到目标目录

来自分类Dev

Copy-Item 不会复制到正确的目标目录

Related 相关文章

  1. 1

    如何仅将最新的子目录复制到目标Linux Shell脚本

  2. 2

    使用Maven将多个资源目录复制到独立的目标目录

  3. 3

    将多个源目录构建到同一目标目录中

  4. 4

    将来自不同位置和名称的文件复制到一个目标目录中

  5. 5

    Bash:将文件复制到最新目录

  6. 6

    将所有内容从源目录复制到新目录Delphi EX7

  7. 7

    将源目录的内容复制到名称相同但大小写不同的目标目录

  8. 8

    Powershell复制到-如果存在目标目录,则复制到现有目录中

  9. 9

    NuGet软件包目标-如何在构建时将文件复制到目标目录的子文件夹?

  10. 10

    如何使用Dockerfile中的单个COPY层在不同的源目录和目标目录中复制多个文件

  11. 11

    VLC bash转码脚本目标目录

  12. 12

    将mp3复制到目标目录,维护目录结构并在复制完成后删除文件

  13. 13

    tar的目标目录结构与原始目录结构不同

  14. 14

    我可以使用Git Bash将脚本从另一个目录复制到工作目录吗?

  15. 15

    在磁盘上找到一堆随机排序的图像,然后复制到目标目录

  16. 16

    将html文件从源目录复制到构建目录

  17. 17

    将所有内容从源目录复制到新目录Delphi EX7

  18. 18

    将目录列表复制到目标目录的优雅方法

  19. 19

    使用文件结构将所有文件从源目录复制到C#中的目标目录

  20. 20

    将文件列表从grep命令复制到目标目录

  21. 21

    Shell脚本,用于将文件从源目录移动到目标目录

  22. 22

    将文件从多个子目录复制到同一目标目录

  23. 23

    目标目录存在时,使用命令cp -rsf复制源目录

  24. 24

    将目录结构复制到枚举的文件夹

  25. 25

    使用gradle将源目录列表下的文件复制到目标目录

  26. 26

    Maven:将本地jar复制到目标目录

  27. 27

    如何将目录层次结构(省略文件)复制到其他目录中?

  28. 28

    将数据从嵌套的源目录复制到目标目录

  29. 29

    Copy-Item 不会复制到正确的目标目录

热门标签

归档