문제가 있습니다. 내 폴더에 1500개의 .txt 파일이 있습니다. 5개를 1개로 병합하는 함수를 작성해야 합니다. 이제 나는 이것을 한다:
cat 1.txt 2.txt 3.txt 4.txt 5.txt >> 1a.txt
그런데 숫자를 바꾸는 데 시간이 오래 걸립니다. 더 빠르게 할 수 있는 기능이 있나요?
답변1
# Set the nullglob shell option to make globbing patterns
# expand to nothing if pattern does not match existing
# files (instead of remaining unexpanded).
shopt -s nullglob
# Get list of files into list of positional parameters.
# Avoid the files matching "*a.txt".
set -- *[!a].txt
# Concatenate five files at a time for as long as
# there are five or more files in the list.
while [ "$#" -ge 5 ]; do
cat "$1" "$2" "$3" "$4" "$5" >"${n}a.txt"
n=$(( n + 1 ))
shift 5
done
# Handle any last files if number of files
# was not a factor of five.
if [ "$#" -gt 0 ]; then
cat "$@" >"${n}a.txt"
fi
이는 한 번에 5개의 파일을 루프로 연결하여 이름이 지정된 파일을 출력합니다 1a.txt
. 2a.txt
이러한 파일에 파일 이름 접미사 이외의 특수 이름이 있다고 가정하지는 않지만 이러한 파일은 출력 파일이므로 .txt
코드는 파일 일치를 방지합니다 .*a.txt