Solution.txt라는 파일이 있습니다. 현재 디렉터리에 해당 파일이 있는지 확인해야 합니다. 파일이 있으면 삭제하고 (solution.txt)로 바꾸십시오.
예: 내 디렉터리: wer.txt wer1.txt wer2.txtsolution1.txtsolution23.txtsolution32.txt
"solution"으로 시작하고 txt로 끝나는 모든 파일을 디렉터리에서 제거하고 Solution.txt로 바꿔야 합니다.
쉘스크립트 솔루션을 제공해주세요.
답변1
모든 Solution...txt 파일을 삭제하도록 시도하고 조정할 수 있지만, Solution.txt가 있는 경우 삭제하지 않습니다.
find . -type f -name "solution[0-9]*.txt" -exec rm -f {} \;
하지만 파일 이름은 여러 개일 수 없습니다.solution.txt
답변2
질문하신 내용은 아닐 수도 있지만 제 답변은 다음과 같습니다.
먼저, 찾고 있는 항목을 찾아야 합니다.
find /file/where/you're/looking/at -name solution | grep txt
해당 항목을 찾으면 다음을 사용하여 삭제할 수 있습니다.
rm thename23.txt thename34.txt
또는 병합하십시오(완전히 바꾸려면 하나만 사용하십시오 >
).
cat thename23.txt >> thename34.txt
-exec
명령 의 옵션을 사용할 수도 있습니다 find
. 추가 정보여기.
인사
답변3
"solution.txt로 대체"라는 의미를 정의하지 않았지만 먼저 다른 솔루션 파일을 삭제하고 싶기 때문에 어딘가에 대체 파일이 있다고 가정하고 싶습니다. 그렇지 않으면 이 질문은 성립하지 않습니다. 많은 의미가 있습니다.
제 생각엔 가장 간단한 방법은
rm solution[0-9]*.txt >/dev/null && cp /from/somewhere/solution.txt .
이렇게 하면 해당 파일이 삭제되고, 성공하면 Solution.txt가 작업 디렉터리에 복사됩니다. 즉, 이후에 솔루션 파일이 전혀 없거나 Solution.txt라는 파일 하나만 존재한다는 것을 보장합니다.
이렇게 하면 Solution5x.txt라는 파일도 삭제됩니다. 이것이 당신에게 받아들여질지 모르겠습니다. 이것이 문제인 경우 정규식을 사용하여 파일 이름을 일치시켜야 합니다(예 find ... -regex
: .