포함 된 파일 이름을 기반으로 zip 파일의 일괄 이름 바꾸기

user2926302

15000 개의 zip 파일이있는 디렉토리가 있습니다. 압축을 풀 때 다음 형식의 파일을 포함하는 모든 파일의 이름을 바꾸고 싶습니다.

YYYYMMDD_IPC.csv

어디 YYYYMMDD에서 날짜 발생하지만이 문제의 목적 상 정확히 8 자리의 문자열입니다. 그런 다음 zip 파일 자체의 이름을

YYYYMMDD_IPC.zip.

다음 명령 줄까지 얻었지만 YYYYMMDDzip 파일의 이름을 바꾸는 데 사용할 포함 된 파일에서 캡처하는 방법을 모르겠습니다 .

find . -iname '*.zip' | while read file; do unzip -l "$file" | grep -q -P '\d{8}_IPC.csv' && echo $file; done 2>&- 

읽어 주셔서 감사합니다.

John1024
find . -iname '*.zip' -exec bash -c 'name=$(unzip -qql "$1"  '*_IPC.csv' | grep -oE '[[:digit:]]{8}_IPC.csv' | head -n1); [ "$name" ] && mv "$1" "${name%csv}zip"' none {} ';'

작동 원리

이 명령의 형식은 다음과 같습니다.

find . -iname '*.zip' -exec bash -c '...' none {} ';'

현재 디렉토리와 그 아래의 모든 하위 디렉토리에서 .zip 파일을 검색합니다. 찾은 각 파일에 대해 작은 따옴표로 묶인 bash 명령이 실행됩니다. 발견 된 파일의 이름은 $1bash 명령의 인수 1에서 제공됩니다 . 우리의 경우 bash 명령은 두 부분으로 구성됩니다. 첫 번째는 csv 파일 이름을 추출하여 bash 변수에 저장합니다 name.

name=$(unzip -qql "$1"  '*_IPC.csv' | grep -oE '[[:digit:]]{8}_IPC.csv' | head -n1)

위는 명령 대체를 사용합니다 . 내부 명령 $(...)이 실행되고 표준 출력이 캡처됩니다. 이 경우 변수에 할당합니다 name. 이 명령 unzip -qql "$1" '*_IPC.csv'은 glob과 일치하는 zip 파일에서 모든 파일 이름을 자동으로 추출합니다 *_IPC.csv. glob으로 제한 할 필요는 없지만 *_IPC.csvzip 파일에 많은 파일이있는 경우 속도가 빨라질 수 있습니다.

grep 명령은 rep -oE '[[:digit:]]{8}_IPC.csv'추가로 8 자리로 시작하는 이름 만 선택합니다. head -n1명령은 발견 된 첫 번째 이름을 선택합니다. 그러한 이름이 하나만 있다면 head -n1필요하지 않을 것입니다. 그러나 유지 head하면 첫 번째 일치 후 파이프 라인이 종료되므로 속도를 높일 수 있습니다.

두 번째 부분에서는 비어 있지 않은 항목을 가져 오는 데 성공 name했는지 테스트 하고, 그렇다면 zip 파일의 이름을 바꿉니다.

[ "$name" ] && mv "$1" "${name%csv}zip"

위는 접미사 제거 를 사용하여 csv 파일 이름을 zip 파일 이름으로 변경합니다. 접미사를 제거한 후 ${name%csv}반환 $name됩니다 csv. ${name%csv}zipzip 접미사를 추가합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

공백 및 패턴을 포함한 일괄 이름 바꾸기 파일 이름

분류에서Dev

일괄 이름 바꾸기 파일

분류에서Dev

일괄 이름 바꾸기 파일

분류에서Dev

일괄 이름 바꾸기 200000 파일

분류에서Dev

일괄 이름 바꾸기 파일

분류에서Dev

파일 내에 포함 된 문자열로 .txt 파일 이름 바꾸기

분류에서Dev

zip 파일에서 추출 된 파일의 이름을 zip 파일 자체의 이름으로 바꿉니다.

분류에서Dev

이름에 배치가 포함 된 경우 파일 이름 바꾸기

분류에서Dev

특수 문자가 포함 된 폴더의 파일 이름 바꾸기

분류에서Dev

파일의 파일 이름을 루프로 일괄 찾기 및 바꾸기

분류에서Dev

중복 된 파일 이름으로 파일 이름 바꾸기 Bash

분류에서Dev

파일 구조를 기반으로 파일 이름 바꾸기

분류에서Dev

폴더의 파일 일괄 이름 바꾸기

분류에서Dev

파일 이름의 일괄 바꾸기 문자

분류에서Dev

폴더의 파일 일괄 이름 바꾸기

분류에서Dev

파일의 마지막 몇 문자 일괄 이름 바꾸기

분류에서Dev

일부 계산을 기반으로 파일 이름 이름 바꾸기

분류에서Dev

패턴을 사용하여 일괄 이름 바꾸기 파일

분류에서Dev

XML을 기반으로 Bash 이름 바꾸기 파일

분류에서Dev

bash : 정규식을 기반으로 파일 이름 바꾸기

분류에서Dev

체크섬을 기반으로 파일 이름 바꾸기

분류에서Dev

원래 파일 이름의 첫 번째 문자를 기반으로 일괄 이름 바꾸기 스크립트?

분류에서Dev

파일 이름을 부분 문자열로 일괄 이름 바꾸기

분류에서Dev

폴더 이름을 기준으로 파일 이름 바꾸기

분류에서Dev

이름 바꾸기 명령으로 파일 이름 바꾸기

분류에서Dev

문자열이 포함 된 파일 이름을 찾는 기능

분류에서Dev

문자열이 포함 된 파일 이름을 찾는 기능

분류에서Dev

이름의 기호를 기반으로 파일 이름 바꾸기

분류에서Dev

파일 이름에 포함 된 날짜를 기준으로 파일 찾기

Related 관련 기사

  1. 1

    공백 및 패턴을 포함한 일괄 이름 바꾸기 파일 이름

  2. 2

    일괄 이름 바꾸기 파일

  3. 3

    일괄 이름 바꾸기 파일

  4. 4

    일괄 이름 바꾸기 200000 파일

  5. 5

    일괄 이름 바꾸기 파일

  6. 6

    파일 내에 포함 된 문자열로 .txt 파일 이름 바꾸기

  7. 7

    zip 파일에서 추출 된 파일의 이름을 zip 파일 자체의 이름으로 바꿉니다.

  8. 8

    이름에 배치가 포함 된 경우 파일 이름 바꾸기

  9. 9

    특수 문자가 포함 된 폴더의 파일 이름 바꾸기

  10. 10

    파일의 파일 이름을 루프로 일괄 찾기 및 바꾸기

  11. 11

    중복 된 파일 이름으로 파일 이름 바꾸기 Bash

  12. 12

    파일 구조를 기반으로 파일 이름 바꾸기

  13. 13

    폴더의 파일 일괄 이름 바꾸기

  14. 14

    파일 이름의 일괄 바꾸기 문자

  15. 15

    폴더의 파일 일괄 이름 바꾸기

  16. 16

    파일의 마지막 몇 문자 일괄 이름 바꾸기

  17. 17

    일부 계산을 기반으로 파일 이름 이름 바꾸기

  18. 18

    패턴을 사용하여 일괄 이름 바꾸기 파일

  19. 19

    XML을 기반으로 Bash 이름 바꾸기 파일

  20. 20

    bash : 정규식을 기반으로 파일 이름 바꾸기

  21. 21

    체크섬을 기반으로 파일 이름 바꾸기

  22. 22

    원래 파일 이름의 첫 번째 문자를 기반으로 일괄 이름 바꾸기 스크립트?

  23. 23

    파일 이름을 부분 문자열로 일괄 이름 바꾸기

  24. 24

    폴더 이름을 기준으로 파일 이름 바꾸기

  25. 25

    이름 바꾸기 명령으로 파일 이름 바꾸기

  26. 26

    문자열이 포함 된 파일 이름을 찾는 기능

  27. 27

    문자열이 포함 된 파일 이름을 찾는 기능

  28. 28

    이름의 기호를 기반으로 파일 이름 바꾸기

  29. 29

    파일 이름에 포함 된 날짜를 기준으로 파일 찾기

뜨겁다태그

보관