bash中的参数

时间:2011-12-18 10:44:12

标签: linux bash unix

这个脚本将所有的doc文件移动到指定的目录....我已设法放置一个参数,但我面临的问题是放置脚本移动到的完整路径,例如我想运行脚本像这个在下面

./loo -d then path where im moving the files (i.e ./loo -d the second argument where files are moving to)

这是我的代码

#!/bin/bash
From="/home/elg19/lone/doc"
To="/home/elg19/documents"

if [ $1 = -d ]; then
cd "$From"
for i in pdf txt doc; do
find . -type f -name "*.${i}" -exec mv "{}" "$To" \;
done
fi

2 个答案:

答案 0 :(得分:1)

不确定究竟是什么问题?

如果"包含空格,是否需要将./loo -d "full path with spaces"放在完整路径周围?
{{1}} 与$ 1类似,可以使用$ 2检索完整路径。

答案 1 :(得分:0)

怎么样?

#!/bin/bash

from=/home/elg19/lone/doc
if [[ $1 = -d ]]; then
    to=$2
else
    to=/home/elg19/documents
fi

find "$from" -type f \( -name '*.pdf' -o -name '*.txt' -o -name '*.doc' \) -exec bash -c 'dest=$1; shift; mv "$@" "$dest"' _ "$to" {} +