gpt4 book ai didi

linux - 用于克隆目录的 Shell 脚本

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:04:17 25 4
gpt4 key购买 nike

我需要制作一个具有 2 个参数的 shell 脚本,每个参数都是一个有效的目录。该脚本在第一个参数指定的第一个目录中创建一个与第二个参数同名的新目录,并将第二个目录的内容(子目录和文件)复制到新创建的目录中。但它只复制扩展名为 .txt 的文件。

这是我到目前为止得到的:

#!/bin/bash
if [ ! $# -eq 2 ]
then echo usage: file.sh directory1 directory2
exit 1
fi
if [ ! -d $1 ]
then echo $1 is not a directory \!
exit 1
fi

if [ ! -d $2 ]
then echo $2 is not a directory \!
exit 1
fi

最佳答案

将调试留给学生:

die () { echo >&2 "$*"; echo "Usage...."; exit 1; }from="$1";to="$2";[ ."$from" = . ] && die "from dir name missing";[ ."$to" = . ] && die "to dir name missing";[ -d "$from" ] || die "from dir $from not a directory";[ -d "$to" ] || die "to dir $to not a directory";target="$to/$(basname "$from")";  #final target dir name, if I understand you correctly.find "$from" -name '*.txt' -maxdepth=1 | cpio -pd "$to" ||# (cd "$from" && find * -name '*.txt' -maxdepth=1 | cpio -o...) | ( cd "$to" && cpio -i...) ||   die "cpio failed"

请注意 cpio 有很多选项,您应该在使用前查看它们。

注释掉的技术允许您更自由地移动到备用目标目录,我认为您在这里不需要。

避免悲伤:总是引用文件名。

关于linux - 用于克隆目录的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15679215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com