我有三个变量:
taille
:迭代次数
racine
:从哪里复制的目录
rep
:目录复制<> br
因此代码应该从racine到rep递归复制,复制的文件数量受尾部限制。我似乎无法使cp命令工作,我不知道如何使递归工作。我的代码如下
if [ -z "$1" ]
then
taille=0
else
taille=$1
fi
if [ -z "$2" ]
then
racine=`pwd`
else
racine=$2
fi
if [ -z "$3" ]
then
rep="test2"
else
rep=$3
fi
count=0
for i in `ls $racine`;
do
if [ $count -lt $((taille+1)) ]
then
echo $i
`cp $i test2`
fi
count=$((count+1))
done
有人能帮助我吗?
答案 0 :(得分:0)
有几件事:
您不需要复制命令周围的后退标记,因此只需cp $i test2
。
您可以增加这样的变量:count=`expr $count + 1`
。
编辑:如果您使用Bash,则count=$((count+1))
语法有效。
答案 1 :(得分:0)
以下快速和脏的测试脚本似乎可以做你想要的(或多或少)。
我试图传达一般方法,而不是提供完整的解决方案。给出源目录的相对路径(例如../../),下面的内容将会出错(查看mkdir -p
行),因此您可能需要考虑一下这个问题。我希望它能够清楚地传达这个想法。
#!/bin/bash
racine="$1"
rep="$2"
declare -i taille=3
declare -i count=0
while read -r -d $'\0'; do
if [ $count -ge $taille ]; then
break
fi
if [ -d "$REPLY" ]; then
mkdir -p "$rep/$REPLY";
else
cp "$REPLY" "$rep"
fi
count=$((count+1))
done < <(find $racine -print0)