ProgramingTip

OS X의 디렉토리에있는 모든 파일의 파일 변경

bestdevel 2020. 12. 2. 21:38
반응형

OS X의 디렉토리에있는 모든 파일의 파일 변경


다른 누구와 (.md)로 자동 변환하려는 하나의 특허 (이 경우 .txt)를 파일로 가득 찬 디렉토리가 있습니다.

이 디렉토리의 모든 파일을 다른 파일로 변환하는 데 사용할 수있는 간편한 터미널 한 줄이?

아니면 정규식으로 펼쳐를 포장해야합니까?


다음과 같이 사용할 수 있습니다.

for old in *.txt; do mv $old `basename $old .txt`.md; done

먼저 사본을 만드십시오!


또는 ren(이름) 유틸리티를 사용 합니다.

brew install ren

ren '*.txt' '#1.md'

파일 이름에 접두사 또는 접미사를 사용하여 파일의 이름을 바꾸려면

ren 'prefix_*.txt' 'prefix_#1.md'

이를 위해 터미널이 필요한 모든 파일을 강조 표시합니다. 마우스 오른쪽 버튼을 클릭하고 "## 항목 이름 짓고"를 선택하고 "찾기 :"상자에 ".txt"를 입력하고 "바꿀 내용 :"상자에 ".md"를 입력합니다.


이를 위해 선호되는 Unix 방법 (예, OS X는 Unix 기반)은 다음과 될 수 있습니다.

ls | sed 's/^\(.*\)\.txt$/mv "\1.txt" "\1.md"/' | sh

forif lsby design으로 반복하면 전체 파일 이름 목록을 반복하는 이유는 무엇입니까? 파이프가 사용하세요. 명령을 사용하여 출력을 생성 / 즉, 명령에 의해 생성 된 명령 명령 (즉, 명령에 의해 생성되는 명령) Brian Kernighan Unix에서 가장 좋아하는 것입니다. ls하고는 sed상기 파이프를 제거하는 생산품 sh:

$ ls | sed 's/^\(.*\)\.txt$/mv "\1.txt" "\1.md"/'
mv "firstfile.txt" "firstfile.md"
mv "second file.txt" "second file.md"
$

보시다시피, 이제 한 줄의 펼쳐 일뿐 아니라 완전한 펼쳐집니다. 그래서 그냥에 한 줄의 펼쳐에 의해 생성 된 펼쳐를 공급하게 sh하고, 그것조차에 공백이있는 파일 이름 작동 물론 OS X의 펼쳐 인터프리터를.

BTW : 때마다 당신은 뭔가 입력 단자 가 같은 단어로 단 하나의 명령 인 경우에도 ls펼쳐서 작성을 하거나 모든 유닉스 에도 펼쳐서 실행 date등 항상 그냥 ASCII 기반 스트림 펼쳐 / 프로그램입니다 (이 경우 데이터 스트림과 반대되는 명령 스트림 ).

에서 실행되는 실제 명령을 보려면 셸 에서 실행 출력을 켜는 옵션을 sh추가하면 됩니다. 편집기 펼쳐에서 전달한 실제 인수를 사용하여 모든 명령이 실행되는 것을 볼 수 있습니다 (예, 펼쳐지는 펼쳐져 :-)).-xshmvsed

더 복잡함이 사용하고 awk, 기본 작업 만하 기 위해 다른 프로그램을 설치하고 있습니다 ren. perl이 간단한 일상 작업을 위해 50 정도의 줄 펼쳐 를 작성하는 것을 선호하는 사람들도 계명 알고 있습니다.

파인더에서 파일 이름을 변경하는 것이 더 쉬울 수 있고 Mac에 원격으로 연결하면 (예 :을 통해 ssh) 파인더 사용이 전혀 불가능합니다. 그렇기 때문에 cmd 라인이 여전히 매우 유용합니다.


bash 함수는 다음과 같습니다.

function change_all_extensions() {
    for old in *."$1"; do mv $old `basename $old ."$1"`."$2"; done
}

용법 :

$ change_all_extensions txt md

(그 답변에 대한 주석에서 텍스트 서식을 얻는 방법을 알 수 없습니다.)


펼쳐지는 것이 필요 없습니다.

find ./ -name "*.txt" | xargs -I '{}' basename '{}' | sed 's/\.txt//' | xargs -I '{}' mv '{}.txt'  '{}.md'

.gifx.gif에 마지막 파일 이름이 지정된 비슷한 문제가 있었고 이것은 OS X에서 마지막을 제거하기 위해 작동했습니다 .gif.

for old in *.gifx.gif; do
    mv $(echo "$old") $(echo "$old" | sed 's/x.gif//');
done

    cd $YOUR_DIR
    ls *.txt > abc
    mkdir target // say i want to move it to another directory target in this case
    while read line
    do 
    file=$(echo $line |awk -F. '{ print $1 }')
    cp $line target/$file.md  // depends if u want  to move(mv) or copy(cp)
    done < abc

프로그래밍에 능숙하지 않은 사람들을 위해 위키 에서 기사를 확인할 수 있습니다 .
코딩을 포함하지 않는 많은 방법을 보여 주시고 파일 변경
에 대한이 블로그 게시물을 확인할 수도 있습니다 . 여기에는 모든 작업을 수행하는 콘솔 애플리케이션이 포함되어 있습니다.

참고 URL : https://stackoverflow.com/questions/14887275/changing-file-extensions-for-all-files-in-a-directory-on-os-x

반응형