![명령줄에서 최신 파일 및 확장자를 가진 관련 파일을 다른 디렉터리로 복사하는 방법](https://linux55.com/image/221130/%EB%AA%85%EB%A0%B9%EC%A4%84%EC%97%90%EC%84%9C%20%EC%B5%9C%EC%8B%A0%20%ED%8C%8C%EC%9D%BC%20%EB%B0%8F%20%ED%99%95%EC%9E%A5%EC%9E%90%EB%A5%BC%20%EA%B0%80%EC%A7%84%20%EA%B4%80%EB%A0%A8%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%8B%A4%EB%A5%B8%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EB%A1%9C%20%EB%B3%B5%EC%82%AC%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
다음 파일이 포함된 디렉터리가 있다고 가정해 보겠습니다.
one.txt, one.txt.tmp1, one.txt.tmp2, two.txt, two.txt.tmp1, two.txt.tmp2, ... 및 기타 유사한 콘텐츠
최신(타임스탬프 기준) 파일을 찾고 싶습니다. 파일이 two.txt이고 모든 파일이 tmp 파일(two.tmp1 및 two.tmp2)이라고 가정하고 이를 알려진 디렉터리에 복사합니다. 최신 파일을 복사하는 방법을 알고 있습니다.
cp -p " ls -dtr1 "$SRC_DIR"/* | tail -1
" "$DEST_DIR"
하지만 관련 서류가 모두 필요해요. 누구든지 어떤 아이디어가 있습니까? 감사해요!
답변1
뭐, 목표는 분명해요. bash 구문만 사용하여 bash에서 무언가를 빠르게 해킹했습니다.
#!/usr/bin/env bash
latest_file ()
{
local file latest
local src="$1"
local dst="$2"
for file in "${src:-.}"/*;
do
[[ $file -nt $latest ]] && latest="$file";
done;
cp -v "${latest%.*}"* "$dst"
}
main() {
if (($# < 2)); then
printf '%s\n' "Usage: ${0##*/} [src] [dst]"
exit 1
else
latest_file "$@"
fi
}
main "$@"
latest
이 내용을 "확장 필요 없음"이라는 스크립트에 넣으십시오.- 실행 가능하게 만들어라
chmod u+x latest
- 실행
./latest source destination
# source는 소스 디렉터리이고, 대상은 파일을 복사할 대상 디렉터리입니다. - 인수 없이 실행하면
./latest
무엇을 해야 할지 알려줄 것입니다.