複製帶有命令列參數的命令

複製帶有命令列參數的命令

我正在編寫一個簡單的腳本,它將採用關鍵字。然後,它將在目錄中尋找包含該關鍵字的檔案並將它們複製到另一個目錄(目錄名稱=關鍵字)。

該關鍵字作為命令列參數傳遞。這是我的腳本:

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

相關內容