リスト($ docs)のフォルダ名のセットを監視するスクリプトがあります。 フォルダが空でないことがわかった場合、ファイルの名前を変更して移動し、タイムスタンプを追加する必要があります。Bash:名前を変更した正規表現に書式付きの日付を含める
これは私がこれまでに得たものである:
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は次のように記載されているフォルダのセットです:
/foldername
/anotherfoldername
このスクリプトは正しく私のファイルの名前を変更します(folderplacement_filename.ext )、それらを/ temp /ディレクトリに移動します。
しかし、「日付+%d%m%Y%H%M%S」という文字列が追加されており、これを名前を変更した文字列に正常に追加する方法が見つかりません。
$(日付)を追加すると、余分な書式設定は無視されます。例えば
年代の名前を変更への追記:(。^ | /)([^ /])/([^ /] *)$:を/ tmp/$ 2 $ 3 $(日) は、ファイル名を与えます
"4 24 35 20 48 111 123 321をfolderplacement_filename.ext" 私は(.EXTでもokです後の日付を追加する。)ファイルは、 "folderplacement_filename11102017011632.ext" のように見えるようにしたいよう
これはおそらくです私が引用するか、または正しい方法でかっこにする必要がある何か、私はそれを把握することはできません。
ありがとうございます!これは正しい軌道に乗った。 [^ /。*]([^ /] *)/([^ /] *)\ $:/を二重引用符でエスケープして解決しました。 tmp/$ now \ _ \ $ 2 \ $ 3 \ $ 4: "あなたは欠けているものを見つけ出すのも正しいです。"これはスクリプトには見付かりませんでした。 – Stian