无法删除文件名的空格

无法删除文件名的空格

我无法删除文件名中的空格,如下所示,请告知此问题是否有任何解决方案。谢谢

/home/文件:

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

如果文件存在带有日期,并且不仅仅是 的输出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// /}"

请注意,根据您的示例,这并不改名目录中的文件,它只是以您在问题中显示的格式列出它们,不带空格。

相关内容