The UNIX and Linux Forums  
Helloやアメリカ合衆国へようこそ! UNIXおよびLinuxフォーラム!訪問し、当社のグローバルコミュニティに参加いただきありがとうございます。

Go Back   UNIXおよびLinuxフォーラム > トップフォーラム > シェルプログラミングとスクリプティング
Googleのunix.com



シェルプログラミングとスクリプティング KSH 、 CSH 、 shに、 bashの、はPerl 、 PHPは、削除するsed 、 Awkの、他のシェルスクリプトやシェルスクリプト言語についての質問の投稿はこちら。

その他のUNIXおよびLinuxフォーラムトピックは参考にすること
スレッド スレッドスターター フォーラム 返信 最後の投稿
forループを使用してファイル名をスペースで検索 mronsman UNIXのダミー質問と回答のため 3 2008年9月12日 08:23午前
forループでの変数の問題はif文 ejdv シェルプログラミングとスクリプティング 6 2008年6月17日 08:52午前
ループ文の場合-エラーをキャッチ lumdev シェルプログラミングとスクリプティング 4 2007年9月20日 07:50午前
whileループの場合、文 ボボ UNIXのダミー質問と回答のため 2 2006年11月7日 12:38午後
文字列の場合、ループのための声明 狙撃とがり UNIXのダミー質問と回答のため 7 2006年3月2日 07:28午前

Reply
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek を搭載 Powered by Google
 
LinkBack スレッドツール このスレッドを検索 スレッドを評価 表示モード
  #1固定リンク)  
Old 2009年7月3日
cbo0485 cbo0485 is offline
登録ユーザー
  
 

参加日: 2008年3月
投稿: 87
ループ文のファイル名を操作して下さい

コード:
for i in `find . -name "*.BEFORE_DISASTER_RECOVERY"`;do dir_name=`dirname $i`;file_name=`basename $i`;cd $dir_name;mv $file_name (STUCK HERE) ;pwd;cd $BASE_DIR;done
わかりましたので、この点を得ることができた。ご覧のように、私は、ループは、ファイル名の文字列BEFORE_DISASTER_RECOVERYで任意のファイルを検索、 dir_nameとファイル名を設定し、 2つの変数は、 CDの小さなdir_nameディレクトリには、私はこだわっているし、この場所があります。私はミュージックビデオ$ファイル名を$ filenameにマイナス"が必要です。 BEFORE_DISASTER_RECOVERY 。

私はそれの何か簡単なこと、これが現在こだわっていることを確認しています。
  #2固定リンク)  
Old 2009年7月3日
vidyadhar85's Avatar
vidyadhar85 vidyadhar85 is offline Forum Staff  
モデレータ(教師)
  
 

参加日: 2008年6月
場所:インド
投稿数: 1,390
何を$ filenameには"マイナス"とは何ですか?
それミュージックビデオ.txt Test.txtはテストとは何ですか?
  #3固定リンク)  
Old 2009年7月3日
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
シェルプログラマは、著者
  
 

参加日: 2007年3月
場所:トロント、カナダ
投稿数: 2361
引用:
当初の投稿 cbo0485 View Post

(コードやすいように)のフォーマット
引用:
コード:
for i in `find . -name "*.BEFORE_DISASTER_RECOVERY"`

もしあれば、ファイル名にスペースが含まれてそれは失敗します。ループにパイプを見つけるのは、出力:

コード:
find . -name "*.BEFORE_DISASTER_RECOVERY" |
while read file
do
  : do whatever
done
ループの場合は、意味のある変数名を使用する(そしてあなたのスクリプトをより読みやすいとなります。 )
引用:
コード:
do
  dir_name=`dirname $i`
  file_name=`basename $i`

また外部コマンドのいずれか、またはベースdirname必要はない。 Unixのシェルの内部でそれができる:

コード:
dir_name=${file%/*}
file_name=${file##*/}
引用:
コード:
  cd $dir_name
  mv $file_name # (STUCK HERE)

$ dir_nameスペースを含む場合、両方のCDとミュージックビデオは失敗します。変数の参照引用:

コード:
  cd "$dir_name"
  mv "$file_name"
引用:
コード:
  pwd
  cd $BASE_DIR
done
わかりましたので、この点を得ることができた。ご覧のように、私は、ループは、ファイル名の文字列BEFORE_DISASTER_RECOVERYで任意のファイルを検索、 dir_nameとファイル名を設定し、 2つの変数は、 CDの小さなdir_nameディレクトリには、私はこだわっているし、この場所があります。私はミュージックビデオ$ファイル名を$ filenameにマイナス"が必要です。 BEFORE_DISASTER_RECOVERY 。

私はそれの何か簡単なこと、これが現在こだわっていることを確認しています。

あなたが必要です:

コード:
find . -name "*.BEFORE_DISASTER_RECOVERY" |
while read file
do
  mv "$file" "$file%.BEFORE_DISASTER_RECOVERY}"
done
  #4固定リンク)  
Old 2009年7月3日
cbo0485 cbo0485 is offline
登録ユーザー
  
 

参加日: 2008年3月
投稿: 87
引用:
当初の投稿 cfajohnson View Post

(コードやすいように)のフォーマット

もしあれば、ファイル名にスペースが含まれてそれは失敗します。ループにパイプを見つけるのは、出力:

コード:
find . -name "*.BEFORE_DISASTER_RECOVERY" |
while read file
do
  : do whatever
done
ループの場合は、意味のある変数名を使用する(そしてあなたのスクリプトをより読みやすいとなります。 )

また外部コマンドのいずれか、またはベースdirname必要はない。 Unixのシェルの内部でそれができる:

コード:
dir_name=${file%/*}
file_name=${file##*/}

$ dir_nameスペースを含む場合、両方のCDとミュージックビデオは失敗します。変数の参照引用:

コード:
  cd "$dir_name"
  mv "$file_name"

あなたが必要です:

コード:
find . -name "*.BEFORE_DISASTER_RECOVERY" |
while read file
do
  mv "$file" "$file%.BEFORE_DISASTER_RECOVERY}"
done
私は私のスクリプトをLinuxに新しいていたが、知っていたが実現決して私は、ロル川不良だった。

まあとにかく、誤解やタイプミスだったと思う、私は私のファイルに、私はそれを削除するかを追加することはありません。

私は名前のファイルがあります:

startServerABC.BEFORE_DISASTER_RECOVERY
または
startServer.sh.BEFORE_DISASTER_RECOVERY

私は、ファイル名から、 。 BEFORE_DISASTER_RECOVERY削除するとのままにする必要がある

startServerABCまたはstartServer.sh
  #5固定リンク)  
Old 2009年7月3日
vidyadhar85's Avatar
vidyadhar85 vidyadhar85 is offline Forum Staff  
モデレータ(教師)
  
 

参加日: 2008年6月
場所:インド
投稿数: 1,390
その後は、ベースを使用する
コード:
basename "$filename" .BEFORE_DISASTER_RECOVERY
home> basename startServer.sh.BEFORE_DISASTER_RECOVERY .BEFORE_DISASTER_RECOVERY
startServer.sh
home>  basename startServerABC.BEFORE_DISASTER_RECOVERY .BEFORE_DISASTER_RECOVERY
startServerABC
私は私のポイントを得たと思う...
  #6固定リンク)  
Old 2009年7月6日
cbo0485 cbo0485 is offline
登録ユーザー
  
 

参加日: 2008年3月
投稿: 87
引用:
当初の投稿 vidyadhar85 View Post
その後は、ベースを使用する
コード:
basename "$filename" .BEFORE_DISASTER_RECOVERY
home> basename startServer.sh.BEFORE_DISASTER_RECOVERY .BEFORE_DISASTER_RECOVERY
startServer.sh
home>  basename startServerABC.BEFORE_DISASTER_RECOVERY .BEFORE_DISASTER_RECOVERY
startServerABC
私は私のポイントを得たと思う...
これは完全に私のループ内に動作します。

ありがとう
コード:
for i in `find . -name "*.BEFORE_DISASTER_RECOVERY"`;do dir_name=`dirname $i`;file_name=`basename $i`;cd $dir_name;cp $file_name `basename $file_name .BEFORE_DISASTER_RECOVERY`;pwd;cd $BASE_DIR;done
Reply

ブックマーク

スレッドツール このスレッドを検索
このスレッドを検索

高度な検索
表示モード このスレッド
このスレッド

投稿ルール
あなた ことができない。 新しいスレッドを投稿
あなた ことができない。 返信の投稿
あなた ことができない。 添付ファイルの投稿
あなた ことができない。 自分の投稿を編集

BBコード なる 〜の上に
スマイリー なる 〜の上に
[イメージ] コードは 〜の上に
HTMLコードは、 オフ
トラックバック なる 〜の上に
ピングバック なる 〜の上に
Refbacks なる 〜の上に




すべてGMT -4です。現在の時刻は 01:59午後


提供: vBulletin、著作権© 2000 - 2006、Jelsoft企業株式会社。言語翻訳による電源
vBCredits v1.4著作権© 2007 - 2008 、 PixelFXスタジオ
は、 UNIXおよびLinuxフォーラムのコンテンツ著作権© 1993 〜 2009 。すべての権利を管理しReserved.Ad RedTyger

コンテンツ関連のURLで vBSEO 3.2.0