나는 길에있다 :
/myuser/downloads/
그리고 하위 폴더를 만듭니다.
/myuser/downloads/new
이제 다운로드 폴더의 모든 파일과 폴더 / 하위 폴더를 하위 폴더로 옮기고 싶습니다.
어떻게해야합니까?
나는 시도했다 :
mv -R *.* new/
그러나 이동은 -R 스위치를 사용하지 않습니다.
답변
명령
mv !(new) new
트릭을해야합니다. 작동하지 않으면 shopt -s extglob
먼저 실행하십시오 .
숨겨진 파일 / 디렉토리 (도트로 시작)를 이동하려면 shopt -s dotglob
먼저 실행하십시오 .
요약하자면 다음과 같습니다.
shopt -s extglob dotglob
mv !(new) new
shopt -u dotglob
( dotglob
나쁜 놀라움을 피하기 위해 항상 설정 을 해제 하는 것이 좋습니다 ).
답변
나는 이와 같은 것을 찾았지만 이해하기가 조금 더 간단하며 당신에게도 잘 작동 할 수 있습니다.
ls | grep -v new | xargs mv -t new
위의 솔루션에 설명 추가하기 :
매뉴얼 페이지에서 :
-
mv -t
-t, --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY
-
grep -v
-v, --invert-match Invert the sense of matching, to select non-matching lines.
단계별 설명 :
ls
현재 디렉토리의 파일을 나열합니다grep -v new
새것과 일치하지 않는 파이프를 반환합니다.xargs mv -t new
파이프 된 파일grep -v
을 대상 디렉토리 로 이동합니다.
답변
간단한 생각. / myuser 에 있다고 가정하고 다운로드 이름 을 new로 바꾸고 새 다운로드 디렉토리를 작성한 다음 새 디렉토리로 이동 하십시오.
mv downloads new # downloads is now called new
mkdir downloads # create new directory downloads
mv new downloads # move new into it.
답변
폴더의 모든 파일을 하위 폴더 중 하나로 옮기려면 다음 명령을 사용할 수 있습니다.
find /myuser/downloads/ -type d -name 'new' -prune -type f | xargs mv -t /myuser/downloads/new
모든 파일을 찾은 다음 하위 폴더로 옮깁니다.
@waltinator :의 -type d -name 'new' -prune
통과를 방지하기 위해 추가되었습니다 /myuser/downloads/new
.
답변
이 대체 과정을 시도해 볼 수 있습니다 – – 경로에 남아
/myuser/downloads/
하지만, 대신에 먼저 만드는 /myuser/downloads/new/
디렉토리 대신에 폴더를 만들 /myuser/
명령으로, 디렉토리 mkdir ../new
다음에있는 모든 파일을 이동 downloads
로 new
, 그리고 마지막으로 이동 new
로 downloads
. /myuser/downloads/
경로 에있는 동안 다음 명령을 사용하여 한 줄로 수행 할 수 있습니다 .
mkdir ../new && mv * ../new && mv ../new ../downloads
이후이 경우, 파일 / 폴더의 “필터링”모든 종류의에 대해 걱정할 필요가 없습니다 new
와 같은 경로의 동일한 수준에있다 downloads
, 그래서 당신은 모든 것을 이동할 수 downloads
로 new
, 다음 이동 new
downloads`에.
그러나, 당신은 이미 하위 폴더가있는 경우 new
생성을하고, 또 다른 하나를 만드는 데 걱정하지 싶지 않아 – 단지 변경 mkdir
최초의 왼쪽에 명령을 &&
에 위에 표시된 명령에 mv
밀어 명령 new
에서 통로; 당신이 여전히있는 동안 즉 /myuser/downloads/
, 당신은 변경할 수 있습니다 mkdir ../new
로 mv new ..
. 그런 다음 new
[경로에있는 /myuser/downloads/new/
] 하위 폴더 /myuser/new/
가와 동일한 수준으로 위로 올라간 /myuser/downloads/
다음 위에 표시된대로 나머지 명령을 실행할 수 있습니다. 모두 함께, 우리는 경로에서 시작했습니다 /myuser/downloads/
.
mv new .. && mv * ../new && mv ../new ../downloads
“다운로드 폴더에있는 모든 파일과 폴더 / 하위 폴더를 하위 폴더 [ new
] 로 옮기고 싶었 으니 끝났습니다! 이동할 싶었다 경우 에만 파일 (또는 단지 [더 세분화 된 오브젝트의 움직임을 삽입] 폴더 또는), 당신은 다른 명령을 사용해야하는 것 그 같은 수있는 “필터”객체 grep
. 그러나 위에 작성된 명령은 사용자의 목적에 충분합니다.