私はキーワードを使用する簡単なスクリプトを書いています。次に、ディレクトリでそのキーワードを含むファイルを見つけて、別のディレクトリ(ディレクトリ名=キーワード)にコピーします。
このキーワードはコマンドライン引数として渡されます。これは私のスクリプトです。
#!/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" \;