목록 ($ docs)에서 폴더 이름 집합을 모니터하는 스크립트가 있습니다. 폴더가 비어 있지 않으면 파일의 이름을 바꾸고 파일을 이동하고 타임 스탬프를 추가해야합니다. (folderplacement_filename.extBash : 형식이 지정된 날짜를 이름 바꾸기 정규식에 포함하십시오.
이/foldername
/anotherfoldername
이 스크립트는 제대로 내 파일의 이름을 바꿉니다 :
docs="/home/user/docs.txt"
cat $docs | while read line
do
if find "$line" -mindepth 1 -print-quit | grep -q .; then
find $line -type f | rename 's:(^|.*/)([^/]*)/([^/]*)$:/tmp/$2$3
else
echo "empty folders" $line
fi
done
파일 docs.txt는 다음과 같이 나열된 폴더의 집합입니다 :
이
은 내가 지금까지 무엇을 가지고 있습니다),/temp/디렉토리로 이동합니다.하지만 "날짜 + % d % m % Y % H % M % S"문자열을 추가하는 중입니다. 이름 바꾸기 문자열에 정상적으로 추가 할 수있는 방법이 없습니다.
$ (날짜)를 추가하면 추가 형식을 무시합니다. 를 덧붙이 예
'는에게 S를 바꾸려면, (^ | /.) ([^ /])/([^/*) $/TMP/$ 2 $ 3 $ (일자) 가 파일명을 준다 "4 24 35 20 48 111 123 321 folderplacement_filename.ext"
내가 원하는 같은 파일은 "folderplacement_filename11102017011632.ext"같이합니다합니다 (.ext를도 확인 후 날짜를 추가.)
이것은 아마도 내가 옳은 방식으로 인용하거나 대괄호로 묶어야 할 것이지만, 나는 그것을 이해할 수 없다.
고마워요! 이것은 나를 올바른 길로 인도한다. 나는 그것을 다음과 같이 큰 따옴표로 묶어서 해결했다. $ [es : rename] s : (^ |. * /) ([^ /] *) ([^ /] *)/([^ /] *) \ $ :/tmp/$ now \ _ \ $ 2 \ $ 3 \ $ 4 : "누락 된 부분을 찾아내는 것이 옳습니다."이것은 스크립트에서 찾을 수없는 오타였습니다. – Stian