ファイル名からスペースを削除できません。

ファイル名からスペースを削除できません。

以下のようにファイル名のスペースを削除できません。この問題の回避策がある場合はお知らせください。ありがとう

/ホーム/ファイル:

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// /}"

あなたの例によると、これはそうではありません。名前を変更するディレクトリ内のファイルは、スペースなしで質問に表示された形式で一覧表示されます。

関連情報