接受作为参数两个目录路径和代表扩展名的字符串
问题描述:
我似乎无法弄清楚这个问题。接受作为参数两个目录路径和代表扩展名的字符串
创建一个脚本,该脚本接受两个目录路径和一个表示扩展名的字符串作为参数。它应该复制具有该特定扩展名的所有文件。
实例输出继电器:
$ 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
$
答
首先你要处理的输入。你知道你正在服用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
)的所有文件复制到匹配*.ext
filespec的dir2($2
)。
如果您愿意,您当然可以将输入参数分配给变量。例如:
dir1="$1"
dir2="$2"
ext="$3"
这更具可读性,可以使逻辑更容易理解。您的文件副本将成为:
cp "$dir1"/*."$ext" "$dir2"
+0
谢谢,它帮助了很多,我对扩展有问题。表示赞许,满意,胜利! – EnTK 2014-12-08 01:30:06
欢迎使用堆栈溢出。请尽快阅读[关于]页面。你有什么尝试?你尝试解决方案的大纲是什么样的?你在哪里遇到问题? – 2014-12-08 00:03:45
请参阅http://stackoverflow.com/help/how-to-ask – tenfour 2014-12-08 00:04:06