저는 키워드를 사용하는 간단한 스크립트를 작성하고 있습니다. 그런 다음 디렉터리에서 해당 키워드가 포함된 파일을 찾아 다른 디렉터리(디렉터리 이름 = 키워드)에 복사합니다.
이 키워드는 명령줄 인수로 전달됩니다. 이것은 내 스크립트입니다.
#!/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" \;