답변:
askubuntu-QA 에는 큰 대답이 있습니다 .
이렇게하려면 터미널을 열고 다음 명령을 실행하십시오.
mv -v ~/Downloads/* ~/Videos/
모든 파일과 폴더가 다운로드 폴더에서 비디오 폴더로 이동합니다.
폴더가 아닌 모든 파일을 이동하려면 :
그러나 다운로드 폴더에서 비디오 폴더로 모든 파일 (폴더는 아님)을 이동하려면이 명령을 사용하십시오.
find ~/Downloads/ -type f -print0 | xargs -0 mv -t ~/Videos
하위 폴더가 아닌 다운로드 폴더에서만 파일을 이동하려면
Downloads 폴더의 모든 파일을 이동하지만 Download 폴더의 폴더에있는 파일은 이동하지 않으려면 다음 명령을 사용하십시오.
find ~/Downloads/ -maxdepth 1 -type f -print0 | xargs -0 mv -t ~/Videos
여기서
-maxdepth
옵션은 찾기가 얼마나 깊이 시도해야 하는지를 지정합니다.1
즉, find 명령에 지정된 디렉토리 만 의미합니다. 다음을 사용하여 시도 할 수 있습니다2
,3
또한 테스트합니다.자세한 설명 은 Ubuntu find 맨 페이지 를 참조하십시오 .
find /src/dir -type f -exec mv --backup=numbered -t /dst/dir {} +
이 명령은 /src/dir
모든 하위 디렉토리를 포함하여 아래의 모든 일반 파일을 찾고 command /dst/dir
를 사용 하여 로 이동합니다 mv
. 디렉토리를 대체하십시오. 이름이 같은 파일은 자동으로 이름이 바뀝니다.
MP3 파일 만 이동 -iname "*.mp3"
하려면 다음에 find
명령 에 옵션을 추가하십시오 -type f
.
c0dev의 회신에있는 두 번째 명령 만 질문에 대답합니다. 아래는이 답장과 어떻게 비교 되는가입니다. 포인트 3과 포인트 4는 여기와 같은 방식으로 다른 답변으로 해결할 수 있습니다.
mv
솔루션을 제외하고 는 또는 -exec +
같은 추가 명령을 호출 하고 파일 이름을 두 번 넘겨 줄 필요가 없습니다 .xargs
parallel
--backup=numbered
. 불행하게도 접미사가 같은 이러한 백업 ~3~
은 기본적으로 대부분의 파일 관리에서 숨겨집니다. 불행히도 mv
접미사를 변경할 수는 없지만 추가 명령으로 쉽게 사후 처리 할 수 있습니다. 이것은 GNU 확장입니다.-print0
-exec command {} +
IEEE Std 1003.1 (POSIX), ISO / IEC 9945 및 The Single UNIX Specification 표준의 일부입니다. 따라서 더 휴대하기 쉬워야합니다. 참고 IEEE 표준 1003.1, 2004 판 , IEEE 표준 1003.1, 2013 및 0,000,243 : "발견"에 -print0 추가 . 그러나 어쨌든 필요한 -t
스위치 mv
는 GNU 확장이므로 POSIX 시스템간에 전체 명령을 이식 할 수는 없습니다.참고 :이 경우로 find
시작하는 경로를 생성 할 수 있는 경우 -
( find
현재 그러한 구현에 대해 알지 못합니다 .) {}
앞에 옵션 끝 표시기 가 있어야합니다 --
.
{}
마지막 논증처럼 보인다 . 수정되었습니다.
불행히도, 표시된 솔루션에 대해 언급 할만 큼 높은 평판을 얻지 못했습니다. 그러나 나는 내가 겪은 문제에 대해 다른 사람들에게 경고하고 싶었습니다. 꽤 아마추어입니다. 그러나 몇 가지 일을 할 때는 처음에는 마음에 들지 않을 수 있습니다. 바라건대, 그것은 다른 사람들을 도울 것입니다.
명령을 시작한 후 다음 메시지의 변형이 제공되었습니다. 그런 다음 명령은 여러 파일을 작성합니다.
mv: `/data/share/docs/src/dir/filename.ext' and `/data/share/docs/src/dst/filename.ext' are the same file
의 /src
부모입니다 /dst
(예 :) /src/../dst/
.
더 나은 해결책이있을 수 있지만 파일을 내 외부의 임시 디렉토리로 이동 /src
한 다음 명령을 다시 실행하여 /src/../dst
원하는 디렉토리 내에 다시 배치합니다 .
내 라이너 하나-이것은 Mac에서 작동하지만 * nix에서도 작동해야합니다. 부모 디렉토리에서 시작하십시오.
# Move files to parent and delete empty folders
find . -not -type d -print0 | xargs -0J % mv -f % . ; find . -type d -depth -print0 | xargs -0 rm -rf
첫 번째 부분은 모든 하위 폴더에서 명령을 실행 한 실제 폴더로 모든 것을 이동합니다. 두 번째 부분은 하위 디렉토리가 비어 있는지 확인하고 (이제 :-)해야하며 하위 디렉토리없이 모든 것을 얻을 수 있도록 삭제합니다.