Unix 디렉터리에서 파일을 찾고 싶습니다. 파일이 있으면 파일 이름과 수정된 타임스탬프를 아래와 같은 변수에 할당하고 싶습니다.
variable=(find the file name, if exist add the filename with _a string _and modified time stamp)
가능합니까? 그것은 다음과 같이 보일 것입니다filename_string_modifieddate(yyyymmdd)
답변1
이 시도:
variable=`find . putYourConditionHere -exec ls -l --time-style +(%Y%m%d): {} \;|sed 's/.*\(([0-9]*)\): \(.*\)/\2_string_modifieddate\1/'`
find
따라서 파일을 찾는 데 사용하고 -exec
exec 옵션을 사용하여 ls
파일을 선택하여 --time-style
원하는 형식을 얻은 다음 마지막으로 sed
올바른 순서를 얻습니다. 변수에 전달하십시오.
:
파일 이름에는 날짜가 포함될 수 없기 때문에 날짜를 포함했습니다 . 그렇지 않으면 ()
또는 같은 내용이 포함된 파일 이름에 대해 스크립트가 실패합니다 (42)
.
답변2
var=$(find -name yourfile -prune -printf '%f_%TY%Tm%Td\n')
그러면 쉘 변수가 기존 파일 var
로 채워집니다.yourfile_yyyymmdd
iff
find
위의 내용이 이해가 되지 않으면 다음 printf primitives
과 같이 하세요.
var=$(find -name yourfile -prune -exec sh -c 'printf "%s_%s\n" "$1" "$(stat -c "%y" "$1" | cut -d " "-f1 | tr -d "-")"' {} {} \;)