exec를 사용한 찾기 및 복사가 작동하지 않습니다.

exec를 사용한 찾기 및 복사가 작동하지 않습니다.

다음 명령을 사용하여 디렉토리의 최신 파일을 가져옵니다.

/usr/bin/find /home/user1/folder1/ -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" " | cut -f5 -d"/"

이는 전체 경로가 아닌 파일 이름만 반환합니다.

그런 다음 찾은 파일을 다른 폴더에 복사하고 싶어서 이전 find 명령에 다음을 추가했습니다.

 -exec cp {} /home/user2/folder2 \;

따라서 전체 명령은 다음과 같습니다.

 /usr/bin/find /home/user1/folder1/ -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" " | cut -f5 -d"/ -exec cp {} /home/user2/folder2 \;

하지만 이것은 반환

cut: invalid option -- 'e'

내가 여기서 뭘 잘못하고 있는 걸까?

답변1

귀하의 명령에는 두 가지 문제가 있는 것 같습니다. 그 중 첫 번째는 귀하의 경우에는 중요하지 않을 수 있지만 여전히 지적할 가치가 있습니다.(나)\n임의의 파일 이름, 특히 개행 문자가 포함된 파일 이름(예: )을 처리할 수 없기 때문에 보편적이지 않습니다.(둘)Kusalananda가 이미 지적했듯이 -exec옵션은 명령에 속하므로 find여러분이 하려는 것처럼 옵션과 분리할 수 없습니다.

GNU 유틸리티를 사용하면 다음 파이프라인으로 이러한 문제를 해결할 수 있습니다. 이 파이프라인은 디렉터리(또는 아래)에서 최신 파일을 찾아 다음 /home/user1/folder1/위치에 복사합니다 /home/user2/folder2/.

find /home/user1/folder1/ -type f -printf '%T@ %p\0' 2>/dev/null |
sort -znk1,1 | tail -zn1 | cut -zf2- -d' '                       |
xargs -0 cp -t /home/user2/folder2/

문제에 관해서는(나): 형식 문자열 \0끝에 있는 및 옵션 -printf과 파이프라인의 다양한 명령 에 유의하세요 -z. 이 명령은 인식된 파일 이름이 NUL로 구분되어 전달되어 공백 및/또는 줄 바꿈을 포함할 수 있도록 합니다.-0

문제에 관해서는(둘): 이 xargs명령을 사용하여 매개변수를 수집 stdin하고 이를 사용하여 새 명령줄을 작성할 수 있습니다. 여기서 비결 중 하나는 복사할 파일 이름을 제공하기 전에 명령 -t의 옵션을 사용하여 cp대상 디렉터리를 지정하는 것입니다. 왜냐하면 xargs명령줄은 다음을 통해 구성되기 때문입니다.추가stdin주어진 명령에 대해 수신하는 모든 인수입니다.

답변2

쉘을 사용하여 zsh가장 최근에 수정된 파일을 디렉토리에 복사한다고 가정합니다 /home/user1/folder1.

cp /home/user1/folder1/*(.om[1]) /home/user2/folder2

zsh대화형 쉘이 아닌 경우 다음을 수행할 수 있습니다 .

zsh -c 'cp /home/user1/folder1/*(.om[1]) /home/user2/folder2'

패턴은 /home/user1/folder1/*(.om[1])지정된 디렉터리에서 가장 최근에 수정된 일반 파일의 이름으로 확장됩니다. *(.om[1])마지막으로 o일반 파일( )을 수정 시간( )별로 정렬하고 첫 번째 파일( )을 선택하는 것입니다..m[1]

숨겨진 파일 이름을 일치시켜야 하는 경우 다음을 사용하십시오.

zsh -c -4 'cp /home/user1/folder1/*(.om[1]) /home/user2/folder2'

(에 추가 -4)

하위 디렉터리를 추가로 보려면 다음을 사용하세요.

zsh -c -4 'cp /home/user1/folder1/**/*(.om[1]) /home/user2/folder2'

쉘 와일드카드 패턴은 **경로명에서 zsh일치합니다 /.

관련 정보