쉘 스크립트를 사용하여 폴더에서 비슷한 이름을 가진 파일 찾기

쉘 스크립트를 사용하여 폴더에서 비슷한 이름을 가진 파일 찾기

동일한 ID를 가진 폴더에서 xml 파일을 선택해야 합니다. 예를 들어, 이라는 이름이 있습니다.

  1. S-000001-0-0.xml
  2. S-000001-0-1.xml
  3. S-000001-0-2.xml
  4. S-000001-0-3.xml
  5. S-000001-0-4.xml
  6. S-000002-0-0.xml
  7. S-000003-0-0.xml

XML 1~5는 하나의 ID에 속하고, 6과 7은 서로 다른 ID에 속합니다. 내 요구 사항은 1~5 유형의 파일을 함께 선택하고 새 폴더로 이동하는 것입니다.

답변1

당신은 그것을 사용할 수 있습니다전반적인 상황이와 같이:

mv S-000001-*.xml dir-to-move-to

답변2

for x in `ls S*.xml | egrep -o '[0-9]{6}' | sort | uniq`; do mkdir -p /tmp/$x; cp S-$x-* /tmp/$x/.; done

이렇게 하면 /tmp에 폴더 ID(각 ID에 대한)가 생성되고 동일한 ID를 가진 모든 파일이 거기에 복사됩니다.

테스트가 정상이면 cp으로 대체할 수 있습니다.mv

ID는 6자리이고 다른 숫자는 모두 더 작다고 가정합니다.

답변3

find /path/to/old/directory -name 'S-??????-?-?.xml' -type f -print0 | \
    xargs -r0 mv -vt /path/to/new/directory

관련 정보