첫 번째 XGB의 데이터를 찾는 방법은 무엇입니까?

첫 번째 XGB의 데이터를 찾는 방법은 무엇입니까?

폴더를 다른 드라이브로 이동하여 드라이브의 일부 공간을 확보하는 방법을 찾으려고 노력했습니다. 공간을 확보하기 위해 모두 이동하지 않고도 이동할 수 있는 항목으로 가득 찬 폴더가 있습니다.

Windows에서는 폴더 여러 개를 선택하고 속성을 가져오면 해당 폴더가 차지하는 공간이 얼마나 되는지 알려주고, 더 많거나 적게 선택한 다음 폴더를 이동합니다. bash 터미널에서는 이 작업을 수행할 수 없으며 어떻게 해야 할지 모르겠습니다. Google 검색을 하면 모든 파일을 특정 크기 이상으로 계속 이동하게 되는데, 이는 제가 원하는 일이 아닙니다.

답변1

GNU 시스템에서는 다음과 같이 작성할 수 있습니다.

#! /bin/bash -
usage() {
  printf >&2 '%s\n' "Usage: $0 <destination> <size> [<file1> [<file2>...]]"
  exit 1
}
(($# >= 2)) || usage
dest=$1
size=$(numfmt --from=iec <<< "$2") || usage
shift 2
(($# == 0)) && exit
selected=()
sum=0

shopt -s lastpipe
LC_ALL=C du -s --null --block-size=1 -- "$@" |
  while
    ((sum < size)) &&
      IFS= read -rd '' rec &&
      s=${rec%%$'\t'*} &&
      file=${rec#*$'\t'}
  do
      selected+=("$file")
      ((sum += s))
  done

((${#selected[@]} == 0)) ||
  exec mv -t "$dest" -- "${selected[@]}"

예를 들어 다음과 같이 사용됩니다.

that-script /dest/folder 1G *

*최소 1GiB를 구성하려면 glob 확장자에서 최대한 많은 파일을 이동하세요 .

답변2

터미널에서도 거의 동일한 작업을 수행할 수 있습니다.

cd /path/to/full/drive/채워진 드라이브의 루트 폴더로 이동하여 시작하십시오 .

그런 다음 사용 가능한 드라이브 내 각 폴더가 차지하는 용량을 살펴보세요 du -hd1(GNU 구현 가정 du).

설명: ( du디스크 사용량) 현재 폴더의 파일 트리에서 반복적으로 실행하고 각 폴더에서 사용하는 용량을 인쇄합니다. 기본적으로 POSIXLY_CORRECT가 다소 읽을 수 없는 환경에 있는지 여부에 따라 512바이트 단위 또는 키비바이트 수로 인쇄하므로 이 -h옵션은 크기를 "사람이 읽을 수 있는" 크기(MB/GB로 변환)로 인쇄하도록 지시합니다. 이 d매개변수는 du지정된 "깊이"(이 경우 1)에 도달한 후 파일 트리로 내려가는 것을 강제로 중지합니다.

콘텐츠를 이동하려는 특정 디렉터리를 찾으면 ls -lh해당 디렉터리 내의 파일 크기 보기를 사용하여 이동하려는 특정 파일을 식별할 수 있습니다. 그러면 h인쇄 크기가 "사람이 읽을 수 있음"으로 다시 설정되고 -l파일 크기가 포함된 "긴" 형식이 표시됩니다.

보너스 포인트: 다음과 같이 작업을 더 쉽게 하기 위해 du파이프 sort(여기서 GNU를 다시 가정 sort)를 사용하여 크기별로 정렬된 출력을 얻을 수 있습니다(파일 이름에 개행 문자가 포함되어 있지 않다고 가정).

du -hd1 | sort -h

ls옵션이 제공되면 출력을 크기별로 정렬할 수도 있습니다 -S.

ls -lhrS

마지막으로 파일/폴더를 이동하려면 이 명령을 사용할 수 있습니다 mv /path/to/source /path/to/target.

문제의 드라이브의 루트 폴더가 무엇인지 알고 있다고 가정합니다.

답변3

사용du -hd1

-h 사람이 읽을 수 있는 형식으로 크기를 인쇄합니다.

-d <1>은 디렉토리의 깊이입니다.

예:

$ du -hd1 
11G     ./dir1
9.5G.   ./dir2
11G     ./dir3
6.3G    ./dir4
9.1G    ./dir5
6.4G    ./dir6
4.8G    ./dir7 
58G     .

관련 정보