특정 디렉터리의 파일만 다른 폴더로 복사하는 방법

특정 디렉터리의 파일만 다른 폴더로 복사하는 방법

.cp /media/d/folder1/* /home/userA/folder2/​ 파일을 복사 하고 있는데 문제는 cp: omitting directory.... . folder1이 메시지 없이 해당 폴더를 복사할 수 있는 다른 방법이 있습니까? 한 가지 더, (복사 대신) 이동하고 싶다면 똑같은 질문을 하는데 어떻게 해야 하나요? 감사해요

답변1

find /media/d/folder1/ -maxdepth 1 -type f | xargs cp -t /home/userA/folder2

파이프 문자 앞의 부분은 |지정된 디렉터리의 하위 디렉터리에서 다른 파일을 찾으려고 시도하지 않고 지정된 디렉터리에서 파일을 찾습니다. 파이프 다음 섹션에서는 이러한 파일을 가져와 대상 디렉터리에 복사합니다. 복사하는 대신 파일을 이동하려는 경우 명령을 변경할 수 있습니다 cp.mv

답변2

공백, 개행 및 기타 이상한 문자가 포함된 파일 이름을 처리할 수 있는 보다 안전한 접근 방식은 find자체 및 해당 -exec작업을 사용하는 것입니다.

   -exec command {} +
          This  variant  of the -exec action runs the specified command on
          the selected files, but the command line is built  by  appending
          each  selected file name at the end; the total number of invoca‐
          tions of the command will  be  much  less  than  the  number  of
          matched  files.   The command line is built in much the same way
          that xargs builds its command lines.  Only one instance of  `{}'
          is  allowed  within the command.  The command is executed in the
          starting directory.

따라서 다음과 같이 할 수 있습니다.

find /media/d/folder1/ -maxdepth 1 -type f -exec cp {} -t /home/userA/folder2

이렇게 하면 숨겨진 파일도 복사됩니다.

답변3

cp -R dir1/* dir2

이렇게 하면 오류 dir1없이 모든 항목(파일 및 하위 디렉터리)이 에서 로 복사됩니다 .dir2

관련 정보