![쉘 스크립트를 사용하여 폴더에서 비슷한 이름을 가진 파일 찾기](https://linux55.com/image/29116/%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%8F%B4%EB%8D%94%EC%97%90%EC%84%9C%20%EB%B9%84%EC%8A%B7%ED%95%9C%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%EA%B0%80%EC%A7%84%20%ED%8C%8C%EC%9D%BC%20%EC%B0%BE%EA%B8%B0.png)
동일한 ID를 가진 폴더에서 xml 파일을 선택해야 합니다. 예를 들어, 이라는 이름이 있습니다.
- S-000001-0-0.xml
- S-000001-0-1.xml
- S-000001-0-2.xml
- S-000001-0-3.xml
- S-000001-0-4.xml
- S-000002-0-0.xml
- 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