
生成された日付を使用して名前を変更したいファイルがあります。これをどのように自動化できますか?各ファイルのプロパティを見て名前を変更するのは本当に難しいことです。例えば
フォルダに次のものがあるとしましょう。
file1
file2
file3
file4
file5
. . . . . etc
ファイル作成日に応じてファイル名を変更する方法
file1_2018-10-06
file2_2013-10-12
file3_2014-09-26
file4_2018-10-06
file5_2017-11-13
. . . . . etc
答え1
「作成」はmtime
1を意味し、Perlベースを(ab)使用すると仮定しますrename
。
$ rename -n 'BEGIN{use POSIX;} $_ .= strftime("_%x", localtime( (stat($_))[9] ))' file?
rename(file1, file1_2018-09-23)
rename(file2, file2_2018-09-15)
rename(file3, file3_2018-10-01)
rename(file4, file4_2018-09-15)
rename(file5, file5_2018-10-06)
(-n
これは試用版モードです。提案された名前の変更に満足している場合は削除してください。)
1理由は次のとおりです。ファイル作成日を見つける方法は?
答え2
次のことができます。
#!/bin/bash
cd folder
ls -l --time-style=long-iso | awk '{print $8 " " $6}' | while IFS= read line; do
filename=$(echo $line | awk '{print $1}')
date=$(echo $line | awk '{print $2}')
mv ${filename} ${filename}_${date}
done
答え3
stat
書くことができますか?努力する
stat -c"mv %n %n_%y" file* | sed 's/ [^ ]* [^ ]*$//'
mv file file_2018-10-04
mv file~ file~_2018-09-30
mv file1 file1_2018-10-05
mv file1~ file1~_2018-10-04
sh
結果に満足したら、パイプラインを渡します。または、「プロセスの交換」から入手してください。