명령줄 인수를 사용하여 명령 복사

명령줄 인수를 사용하여 명령 복사

저는 키워드를 사용하는 간단한 스크립트를 작성하고 있습니다. 그런 다음 디렉터리에서 해당 키워드가 포함된 파일을 찾아 다른 디렉터리(디렉터리 이름 = 키워드)에 복사합니다.

이 키워드는 명령줄 인수로 전달됩니다. 이것은 내 스크립트입니다.

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

관련 정보