我正在編寫一個簡單的腳本,它將採用關鍵字。然後,它將在目錄中尋找包含該關鍵字的檔案並將它們複製到另一個目錄(目錄名稱=關鍵字)。
該關鍵字作為命令列參數傳遞。這是我的腳本:
#!/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" \;