【发布时间】:2013-11-24 18:11:09
【问题描述】:
我正在尝试查找目录和子目录中的所有文件,然后将它们复制到不同的目录。但是其中一些具有相同的名称,因此我需要将文件复制过来,然后如果有两个文件具有相同的名称,请重命名其中一个文件。
到目前为止,我已经成功地复制了所有找到的具有唯一名称的文件:
#!/bin/bash
if [ ! -e $2 ] ; then
mkdir $2
echo "Directory created"
fi
if [ ! -e $1 ] ; then
echo "image source does not exists"
fi
find $1 -name IMG_****.JPG -exec cp {} $2 \;
但是,我现在需要某种 if 语句来确定一个文件是否与另一个已复制的文件同名。
【问题讨论】:
-
你真的在
****中做了find吗? -
一个
*匹配所有,你不需要四个。如果您想精确匹配四个字符,您可以使用????,其中每个?只匹配一个字符。此外,您需要引用"IMG_????.JPG"(就像我所做的那样)以防止外壳扩展它。您可能很幸运,在您调用find的目录中没有IMG_????.JPG,因此模式保持不变。 -
啊,我明白了,是的,我刚刚在那里测试过。谢谢:)
-
当然!我建议阅读此页面:mywiki.wooledge.org/BashPitfalls 它有很好的信息,初学者(包括我自己)通常会在 bash 上出错。
标签: linux bash shell copy rename