2017-11-25 19 views
0

많은 파일이 지정된 디렉토리에 있습니다. 예를 들어, 6 개를 한 위치에 복사하고 싶습니다. 나는이 함께했다 :하나의 폴더에서 다른 폴더로 'a' 'c'또는 'e'로 시작하는 첫 번째 N 개의 파일을 복사하십시오.

find . -type f |head -6| xargs cp /specified_dir/[ace]* -t /target_loc 

문제는 'A' 'C' 'E'로 시작하는 모든 파일이 복사된다는 점이다. 처음 6 개 파일이 있어야하지만 8 개 ('a'로 4 개, 'c'로 3 개, 'e'로 1 개)를받습니다. 이 문제를 해결할 방법이 있다면 궁금합니다. 명령과 함께

답변

0

만 6 개 첫 번째 ([ace]로 시작하는 파일이 아닌) find 결과 그러나 당신이 마지막으로 실행하는 명령입니다 얻을 :

cp /specified_dir/[ace]* -t /target_loc <file_argument> 

복사 모든 [ace]* 파일 플러스를 <file_argument>은 목표 위치에 xargs을 통해 제공됩니다. 그리고이 명령을 6 번 실행합니다.


[ace]* 파일을 먼저 찾고 ( head과 같이) 처음 6 개를 가져오고 복사 할 파일없이 마지막 명령을 쓰려면이 인수를 xargs에서 제공합니다.

find . -type f -name "[ace]*" | head -6 | xargs cp -t /target_loc 

이제 파일 이름이 공백 인 파일 이름은 처리하지 않으므로 잘못되었거나 안전하지 않습니다.

find . -type f -name "[ace]*" | head -6 | xargs -I{} cp {} -t /target_loc 

-I 그래서 대체 문자열을 설정이 나중에 존재하는 경우, 그것은 인용 인수의 위치를 ​​의미합니다 : 그래서 당신이 구문을 사용할 수 있습니다.