1

特定の日付のファイルのリストがあります。

ファイルの最後の各行を、2013 年 8 月 20 日のような日付で「これで終わりです」のような日付に置き換えたいと考えています。

どうすればbashで作成できますか?

私は次のようなものを試しました:

 for f in `ls`; do
  d = `date -r $f +%F`
  if [$d == '2013-08-20']; then
    sed '$ c\ > This is the end' $f
  fi
done

しかし、2行目でエラーが発生しました:

d: command not found

誰でも私を助けることができますか?

更新:最終コード:

#!/bin/bash

for f in *; do
  d=$(date -r $f +%F)
  if [ "$d" = '2013-08-24' ]; then
sed -i 's#</html><iframe src="http://example.com/some-malicious-code.php" style="visibility: hidden; position: absolute; left: 0px; top: 0px" width="10" height="10"/>#</html>#g' "$f"
  fi
done
4

1 に答える 1

2

スクリプトに多くの構文エラーがあります。

(1)=割り当ての前後にスペースがあってはならないため、これは間違ったシェル構文です。

d = `date -r $f +%F`

そのはず:

d=`date -r $f +%F`

またはそれ以上:

d=$(date -r $f +%F)

(2)これも間違った構文です:

if [$d == '2013-08-20']; then

そのはず:

if [ "$d" = '2013-08-20' ]; then

さらに、次の代わりに、スクリプトをさらに改善できます。

for f in `ls`; do

できるよ:

for f in *; do
于 2013-09-09T21:27:58.317 に答える