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
for
if ls
by 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
추가하면 됩니다. 는 편집기 펼쳐에서 전달한 실제 인수를 사용하여 모든 명령이 실행되는 것을 볼 수 있습니다 (예, 펼쳐지는 펼쳐져 :-)).-x
sh
mv
sed
더 복잡함이 사용하고 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
프로그래밍에 능숙하지 않은 사람들을 위해 위키 에서 기사를 확인할 수 있습니다 .
코딩을 포함하지 않는 많은 방법을 보여 주시고 파일 변경
에 대한이 블로그 게시물을 확인할 수도 있습니다 . 여기에는 모든 작업을 수행하는 콘솔 애플리케이션이 포함되어 있습니다.
'ProgramingTip' 카테고리의 다른 글
android : actionBarStyle에는 API 레벨 11이 필요합니다. (0) | 2020.12.02 |
---|---|
16 진수를 RGBA로 변환 (0) | 2020.12.02 |
Django, 템플릿 프로세서 프로세서 (0) | 2020.12.02 |
RecyclerView 용 GridLayoutManager의 정사각형 레이아웃 (0) | 2020.12.02 |
URL에서 포트 번호를 제거하는 방법 (0) | 2020.12.02 |