我似乎无法弄清楚这个问题。
创建一个脚本,接受两个目录路径作为参数和一个表示扩展名的字符串。它应该复制具有该特定扩展名的所有文件。
示例输出:
$ cpByExtension d1 d0 txt
Copying ".txt" files from directory d1 to directory d0
0 files copied
$ cpByExtension d2 d0 txt
Copying ".txt" files from directory d2 to directory d0
5 files copied
$
答案 0 :(得分:1)
您首先要处理输入。您知道自己正在使用two paths
和an extension
,因此您的参数为$1
,$2
和$3
为:
#!/bin/sh
## validate input
if [ -z "$1" -o -z "$2" -o -z "$3" ]; then
printf "error: insufficient input. Usage: %s <dir1> <dir2> <ext>\n\n" "$0"
fi
一旦您知道自己有输入,那么您可以考虑测试每个目录以确保它们存在:
## validate dirs
if [ ! -d "$1" -o ! -d "$2" ]; then
printf "error: invalid directory. Usage: %s <dir1> <dir2> <ext>\n\n" "$0"
fi
知道目录存在(或者你可以只测试第一个并创建第二个),你现在可以复制匹配的文件:
cp "$1"/*."$3" "$2"
将所有文件从dir1($1
)复制到与$2
文件规范匹配的dir2(*.ext
)。
当然,您可以根据需要将输入参数分配给变量。例如:
dir1="$1"
dir2="$2"
ext="$3"
这更具可读性,可以使逻辑更容易理解。您的文件副本将变为:
cp "$dir1"/*."$ext" "$dir2"