Help us understand the problem. What is going on with this article?

Linux実行コマンド記録

More than 3 years have passed since last update.

実際に使用したコマンドを記録する

特定の文字列を含むファイルを検索して文字を置き換える

$ grep -lr -P "x+" * | xargs sed -b -i~ -r -e 's/(x+)/\1000/g'

grep の -P は Perl 正規表現指定
sed の -b は、Cygwin で CR+LF が LF に変換されないようにバイナリモードで開くように指定。
sed の -r は、拡張正規表現指定
sed の 後方参照は 1桁だけ。対象文字列が "xxx" だと "xxx000" になる。

日付ごとのディレクトリにファイルを移動する

以下のようなファイルがあるとする。

xxx-20160301.bin
xxx-20160302.bin
xxx-20160303.bin
xxx-20160304.bin

これらのファイルをファイル名に含まれる日付をディレクトリ名としたディレクトリを作成して、そこへ移動したい。

$ for d in $(\ls -1 xxx-2016* | sed -e "s/^xxx-\([0-9]*\)\.bin$/\1/g" | sort | uniq); do \
  [ -d $d ] || mkdir $d; \
  mv xxx-$d.bin $d; \
done

一応、ワンライナー。
参考:どのUNIXコマンドでも使える正規表現 - Qiita
sed は、"+"が使えなかったのか。カーリブラケット{}にはエスケープ必要と。
以下の変形でもいいかも

$ for d in $(\ls -1 *.bin | sed -e 's/\(.*\)\([0-9]\{8\}\)\(.*\)/\2/g' | sort ); do echo $d; done
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away