复制带有命令行参数的命令

复制带有命令行参数的命令

我正在编写一个简单的脚本,它将采用关键字。然后,它将在目录中查找包含该关键字的文件并将它们复制到另一个目录(目录名称=关键字)。

该关键字作为命令行参数传递。这是我的脚本:

#!/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" \;

相关内容