2017-03-27 21 views
0

私は90個のファイルを含むディレクトリを持っています。私は唯一の19は、各ファイルごとに異なるだろうファイル名に23とその後の_2345に置き換えられますのでご注意ください/user/jkris03/2016d/IDPSRU20160223_2345.txtファイル名内の特定の文字列のみを再帰的に変更する

にファイル名を変更したい/user/jk/2016d/IDPSRU20160219_2345.txt

のようなファイル名です。

答えを提供できれば大変感謝します。

direcory /ファイルはhdfsにあります。

おかげで、

+0

ディレクトリがファイル内にあることに注意してください – Jee

+0

私はあなたがこれを通過することをお勧めします[Stackoverflow Tour](http://stackoverflow.com/tour)。 – franklinsijo

+0

あなたの説明から、 'jk'を' jkris03'に、 '19'を' 23'ですべてのファイルに変更したいようです。あれは正しいですか? – daemon12

答えて

0

あなたはrenameコマンドを見てすることができます。正規表現で名前を変更することができます。私は異なるディストリビューション間で違いがあると思うので、man renameを使ってどのようにあなたのために動作するかを見てください。あなただけ23_19_を交換したい場合は

2

は、あなたがこのような何かを行うことができます。

hdfs dfs -ls -C /user/jk/2016d/ | awk '{OLD=$0; sub("19_", "23_", $0); system("hdfs dfs -mv "OLD" "$0);}' 

ところ、

hdfs dfs -ls -C /user/jk/2016d/は:HDFSをリストするためである

OLD=$0のファイル:のためであります古いファイル名を格納する。

sub("19_", "23_", $0) :新しいファイル名

system("hdfs dfs -mv "OLD" "$0)を作成するためのものです:

はそれが役に立てば幸いファイルの名前を変更するためのものです!

+0

**注:** '-C'は2.8.1から始まるhadooopバージョンで利用可能です – franklinsijo

+1

右! <2.8.0を使用している場合は、コマンドを次のように変更する必要があります。 'hdfs dfs -ls/user/jk/2016d/| grep -v "Found" | awk '{OLD = $ 8; sub( "19_"、 "23_"、$ 8);システム( "hdfs dfs -mv" OLD "" $ 8);} ' ' – daemon12

関連する問題