我正在编写一个简单的脚本,它将采用关键字。然后,它将在目录中查找包含该关键字的文件并将它们复制到另一个目录(目录名称=关键字)。
该关键字作为命令行参数传递。这是我的脚本:
#!/bin/bash
# start
mkdir $1
cp `grep -Ril \"$1\"` $1
cp
我的命令似乎有错误:
missing destination file operand
我该如何纠正这个错误?
谢谢!
答案1
Mike 的答案中的解决方案大部分是正确的,但是我会稍微更改它以仅在 grep 找到某些内容时创建目录,从而防止出现空目录
#!/bin/bash
filenames=$(grep -Ril "$1")
[ $? -eq 0 ] && mkdir "$1"
for file in $filenames; do
cp "$file" "$1"
done
答案2
这是正确的方法:
#!/bin/bash
mkdir "$1"
filenames=$(grep -Ril "$1")
if [ $? -eq 0 ] ; then
echo "$filenames" | while IFS= read -r line ; do
cp "$line" "$1"
done
fi
答案3
您可以尝试使用 find :
mkdir "$1"
find . -type f -name "*$1*" -exec cp {} path/to/"$1" \;