문자 길이에 따라 여러 .txt 콘텐츠를 단일 파일로 복사

문자 길이에 따라 여러 .txt 콘텐츠를 단일 파일로 복사

문자 수로 디렉토리에서 가장 큰 파일을 찾고, 내용을 복사하고, 해당 파일을 삭제한 다음 다른 파일에 붙여넣고 싶습니다. 최종 목표는 디렉토리의 각 파일(txt)을 이 새로운 순서로 파일을 분리하세요.

문자 수 대신 바이트 크기별로 파일을 정렬하여 이를 관리했습니다.

내가 이룬 유일한 진전은 파일이 포함된 디렉터리를 통해 루프를 시도하는 것뿐이지만 이로 인해 오류가 발생하고 이 코드가 잘못된 트리를 짖는 것처럼 느껴집니다...

du -b *.txt | sort -n | tail -n1

답변1

그리고다루기 힘든, 당신은 사용할 수 있습니다 o또는O 글로벌 예선바이트 크기와 같은 파일 시스템 메타데이터를 기반으로 파일을 쉽게 정렬할 수 있습니다.

cat -- *.txt(OL) >new-file.tmp &&
rm *.txt &&
mv new-file.tmp new-file.txt

이러한 glob 한정자를 사용하면 oeOR OE및 정렬 키를 계산하는 코드 조각을 사용하거나 o+OR 및 정렬 키를 계산하는 셸 함수를 사용하여 O+임의의 기준으로 정렬할 수도 있습니다. 따라서 wc -m각 파일의 문자 수를 가져와 정렬 키로 사용할 수 있습니다. 정렬 키는 숫자이므로 및 사이가 아니라 및 사이 에서 정렬 n되도록 glob 한정자를 전달합니다 .10912

cat -- *.txt(noe\''REPLY=$(wc -m <$REPLY)'\') …

관련 정보