이동하려는 일부 디렉토리 (다른 많은 파일과 함께)에 많은 파일이 있습니다.
운 좋게도 이동하려는 모든 파일에는 이름에 특정 식별자가 포함되어 있으므로 ls | grep IDENTIFIER
이동할 파일의 정확한 목록을 얻을 수 있습니다 .
그러나 mv file /path/to/dest/folder/
하나씩 실행 하지 않고 한 번에 어떻게 실행할 수 있습니까 (이동할 파일이 많습니까)?
이동하려는 일부 디렉토리 (다른 많은 파일과 함께)에 많은 파일이 있습니다.
운 좋게도 이동하려는 모든 파일에는 이름에 특정 식별자가 포함되어 있으므로 ls | grep IDENTIFIER
이동할 파일의 정확한 목록을 얻을 수 있습니다 .
그러나 mv file /path/to/dest/folder/
하나씩 실행 하지 않고 한 번에 어떻게 실행할 수 있습니까 (이동할 파일이 많습니까)?
답변:
당신은 사용할 수 있습니다
mv -t DESTINATION file1 file2 file3
과
mv -t DESTINATION `ls|grep IDENTIFIER`
작동하지만 grep이 각 일치에 대해 새 줄을 출력하므로 mv가 여러 번 호출되는지 확실하지 않습니다.
mv file1 file2 ... destination
와일드 카드 를 사용할 수 있습니다 .
예 : 확장명이 .doc 인 모든 파일을 이동하려면
mv *.doc /path/to/dest/folder/
현재 디렉토리 아래의 모든 문서 파일을 특정 대상으로 이동합니다.
편집하다
댓글에 답하십시오.
mv *.ext *.xml *.txt /path/to/dest/folder/
ABC-IDENTIFIER-XYZ.ext
과 같습니다. 일부 IDENTIFIER-XYZ.ext
는 대부분 다른 확장자를 xml
갖습니다 properties
.
.xml
이동하고 싶지 않은 다른 파일 (예 :)이 있기 때문에 작동하지 않습니다 .
Rajanand 씨가 말한 것처럼 이름과 유형에 공통된 패턴이없는 관련없는 파일 세트를 이동하려는 경우 먼저 이동할 파일이 포함 된 디렉토리로 이동하십시오.
mv file1.ext1 file2.ext2 file3.ext3.. /destination/
파일이 다른 디렉토리에 흩어져있는 경우 move 명령에서 각 파일의 경로 만 지정하면됩니다.
나는 tuomaz의 기술을 사용하지만 약간 수정되었습니다.
mv file1 file2 file3 -t DESTINATION
나는 바닐라 mv 작업과 동일한 순서를 사용하기 때문에 기억하기 쉽고 망치기가 더 어렵다는 것을 알았습니다.
mv file1 DESTINATION
mv
에는 -t
옵션이 언급 되어 있지 않습니다 .
이 명령을 사용하십시오 :
mv `ls|grep IDENTIFIER` /path/to/dest/folder
그러나 ls는 이런 종류의 사용에는 권장되지 않습니다. 대신 find 명령을 사용하십시오 .
ls
이런 종류의 사용에는 권장되지 않습니다. 특히 grep
뒤에서 파일을 나열 하려면을 사용하십시오 find . -name \*IDENTIFIER\*
.
이동할 파일이 너무 많으면 mv
명령 (또는과 같은 다른 명령 rm
)에 대해 너무 많은 파일을 가질 수 있습니다 . xargs
루프와 같은 방식으로 각 파일을 개별적으로 이동 하는 것이 좋습니다 . 그 문제를 해결하는 한 가지 방법은 다음과 같습니다.
ls -1 | grep IDENTIFIER | xargs -i mv {} /path/to/dest/folder/
ls -1
(마이너스 일)은 각 행에 하나의 파일 이름이 있음을 보장합니다. ls
명령에 대한 별칭이 숨겨져 있으면 한 줄에 여러 개의 파일 이름이있을 수 있으며 의도하지 않은 파일을 이동할 수 있습니다.
ls의 출력을 사용하여 mv commnad에 입력 할 수 있습니다.
mv $(ls | grep IDENTIFIER) /path/to/dest/dir
사이의 명령은 $()
검색과 일치하는 파일 이름 목록을 반환하며 mv 명령의 매개 변수로 제공 될 수 있습니다.