프로그래밍 디렉터리 백업

프로그래밍 디렉터리 백업

백업하고 싶은 컴파일된 C 프로그램이 많이 포함된 디렉토리가 있습니다. 지금은 이름이 지정되어 있지만 program.out이를 그냥 으로 변경하고 싶습니다 program.

이런 것들을 제외하는 것이 여전히 가능할까요? 또한 모든 이름을 빠르게 바꾸려면 어떤 종류의 정규식을 사용해야 합니까?

답변1

코드를 백업하려면 git 또는 기타 버전 제어 소프트웨어를 사용하세요. 인터넷에서는 github, bitbucket 등 다양한 이름을 선택할 수 있습니다.

git에서 *.out을 추가하면 .gitignore 파일이 있고 저장소로 전송되지 않습니다.

답변2

첫 번째 질문에 대해서는 명확하지 않습니다. program.out이름을 바꾸려면 program다음을 실행하십시오.

mv program{.out,}

/etc두 번째 질문에서는 접미사가 붙은 파일 목록을 얻고 싶다고 가정합니다 .

#!/bin/bash
ls /etc > /tmp/etcfiles
while read line
do
   if [[ $line =~ \..+ ]]; then
      echo $line
   fi
done < /tmp/etcfiles

필요에 따라 위의 내용을 조정할 수 있습니다.

  • \.리터럴 마침표와 일치합니다.
  • .마침표 뒤의 모든 문자와 일치합니다.
  • +첫 번째 마침표 뒤에는 하나 이상의 문자가 있어야 함을 의미합니다. 따라서 이것은 일치 test.c하지만 test.일치하지 않으려면 을 a 로 test.변경하십시오 .+*

답변3

bash를 셸로 사용하는 경우 이는 셸 파이프라인에 대한 간단한 작업입니다.

ls | grep '\.out$' | while read file; do echo mv "$file" "${file%.*}"; done

ls디렉토리에 파일 목록을 생성합니다.

grep '\.out$'.out으로 끝나는 파일 이름을 추출하고 나머지는 삭제합니다.

while read file파일 이름을 한 번에 하나씩 읽습니다.

echo mv "$file" "${file%.*}"각 파일의 이름을 확장자가 없는 버전으로 바꾸는 mv 명령을 표시하지만 실행하지는 않습니다. 비즈니스 ${file%.*}는 파일 확장자를 제거하기 위한 bash 구문입니다. 실제 실행 시 파이프라인이 원하는 작업을 수행할 것이라는 확신이 들면 해당 echo부분을 제거하고 실제로 실행되도록 하세요.

ls | grep '\.out$' | while read file; do mv "$file" "${file%.*}"; done

관련 정보