2016-11-30 4 views
1

特定の名前を持つdatファイル以外の複数のディレクトリにdatファイル内の行を貼り付けます。特定の名前を持つdatファイル以外の複数のディレクトリにdatファイル内の行を貼り付けます

これまでのコードは次のとおりです。

for file in */*; do 
if [ $file != "NoEdit.dat" ] 
then 
echo 'Configuration' >> $file 
fi 
done 

「NoEdit.dat」という名前のファイルを除外する方法については何か教えてください。 私は!(NoEdit.dat)と "if"引数を実装しようとしています。 私は一般的なプログラミングの完全な初心者です、どんな助けも高く評価されるでしょう!

EDIT: findコマンドを使用しました。

find */* ! -name 'NoEdit.dat' -exec sh -c 'echo "Configuration" >> {}' \; 

答えて

0

このコードは、あなたが望むものを実現:

#!/bin/bash 
directory='/folder/' 
mkdir -p /tmp/ 
find "$directory" -maxdepth 1 -type f -printf '%f\n' | grep -e ".dat" | grep -v "NoEdit.dat" > /tmp/holder && directoryEscaped="$(echo "$directory" | sed 's/\//\\\//g')" && sed -i -e "s/^/$directoryEscaped/" /tmp/holder 
while read -r line; do 
filename="$line" 
echo 'Configuration' >> "$filename" 
done < /tmp/holder 
exit 0 

すべてを行う必要が検索するフォルダパスを変数「ディレクトリ」を提供することです。基本的に、このコードは、指定した名前と一致しないファイルのファイルパスを含む一時ファイルを作成し、各ファイルの最後に(各ファイルの最後に)文字列をエコーし​​ます。

編集:私は

+0

だけ.datファイルを検索し、変更するには、コードを編集し、私はそれを非常に感謝し、あなたの答えをありがとう!私は "find"コマンドを使って自分のやり方で問題を解決していましたが、ここで使用するときはそれを入れます: 'find */*! -name 'NoEdit.dat' -exec sh -c 'echo "設定" >> {}' \; ' –

+0

あなたはようこそ!私はちょうどあなたのコード(と私のコードで)スクリプトは、 "NoEdit.dat"(例えば、.txtファイルを含む)という名前ではないすべてのファイルに "設定"を追加することに注意してください。私は答えを訂正し、必要な質問として ".dat"ファイルだけを探して変更しました。 –

関連する問題