![Ignore_load 파일](https://linux55.com/image/126317/Ignore_load%20%ED%8C%8C%EC%9D%BC.png)
파일이 로드되면 해당 파일에 대한 _load 파일을 생성해야 한다는 요구 사항이 있습니다. 예:- temp_20180101.txt가 로드되면 그에 대한 temp_20180101.txt_load를 만듭니다.
이제 다음 실행에서는 _load 디렉터리에 있는 모든 파일을 무시하고 사용 가능한 최신 파일을 선택하려고 합니다.
하나의 Linux 명령으로 이 작업을 수행하는 방법을 알려주십시오.
답변1
첫 번째 예( 를 사용하여 재귀적으로 파일 찾기 find
):
find . -type f -name 'temp_*.txt' -exec sh -c '[ ! -e "$0"_load ]' {} ';' -print
temp_*.txt
그러면 패턴과 일치하지만 연관된 해당 파일이 없는 현재 디렉토리(또는 그 이하)의 모든 일반 파일 이름이 출력됩니다 temp_*.txt_load
. 그런 다음 해당 로드는 -exec
다른 로드를 대신하여 완료될 수 있습니다 -print
.
두 번째 예(더 간단하고 명시적인 쉘 루프):
for name in ./temp_*.txt; do
if [ -f "$name" ] && [ ! -e "$name"_load ]; then
command_to_load "$name"
touch "$name"_load
fi
done
이는 현재 디렉터리의 파일만 보는 명시적 셸 루프입니다. 일치하는 이름이 일반 파일이고 연관된 해당 파일이 없으면 _load
일부 로드 명령이 호출되고 파일이 생성됩니다.$name
_load
사람들이 사용하고 싶을 수도 있습니다
command_to_load "$name" && touch "$name"_load
- 문 내에서 파일은 로드가 잘 되는 경우에만 생성 if
됩니다 ._load