아래와 같이 파일 이름의 공백을 제거할 수 없습니다. 이 문제에 대한 해결 방법이 있으면 알려 주시기 바랍니다. 감사해요
/홈/파일:
Dec 14 22:10 testfiles
Dec 15 12:30 test file1
Dec 14 21:45 test file2
Dec 16 02:30 testfile3
$ ls -lrt| tr -s " " > filelist.txt
$ cat filelist.txt
2022-12-14,testfiles
2022-12-15,test
2022-12-14,test
2022-12-16,testfile3
답변1
출력뿐만 아니라 날짜가 포함된 파일이 있는 경우 다음을 ls -l
사용할 수 있습니다.진주의rename
:
rename -n -E 's/^(\w+)\s+(\d{2})\s+(\d{2}:\d{2})\s+/$1-$2-$3,/g' -E 's/ //g' Dec*
rename(Dec 14 21:45 test file2 , Dec-14-21:45,testfile2)
rename(Dec 14 22:10 testfiles , Dec-14-22:10,testfiles)
rename(Dec 15 12:30 test file1 , Dec-15-12:30,testfile1)
rename(Dec 16 02:30 testfile3 , Dec-16-02:30,testfile3)
-n
출력이 만족스러우면 제거합니다(모의 실행).
답변2
ls
전혀 구문 분석하지 않고 디렉토리의 파일을 반복하는 것이 더 나을 것입니다 .
for file in *
do
ymd=$(date --date "@$(stat -c '%Y' "$file")" +'%Y-%m-%d')
[ -d "$file" ] && printf "%s,%s\n" "$ymd" "$file"
done
이 루프를 완료하면 공백을 생략하고 파일 이름을 작성하는 것이 간단합니다. 출력 줄을 수정하면 됩니다.
[ -d "$file" ] && printf "%s,%s\n" "$ymd" "${file// /}"
귀하의 예에 따르면 이것은 그렇지 않습니다.이름을 바꿔라디렉터리에 있는 파일은 공백 없이 질문에 표시한 형식으로 나열됩니다.