あなたはfind
コマンドに余分なパッケージを考慮していない場合は、あなたが行うことができますfind
とwhile
ループ、またはfind
と短い1行のヘルパースクリプトとしたいことを正確にはIP
のみです任意のパス階層内のrs 。
:以下を含む一時ディレクトリ
td
で
#!/bin/bash
srchdir="$1"
export ip=192.168.100
export mask=xxx.yyy.zzz
while read -r line; do
mv "$line" "${line/$ip/$mask}"
done < <(find "$srchdir" -type d -name "*$ip*")
例
:
部分文字列の置換とともにfind
とwhile
ループを利用して、あなたは次のように何かを行うことができます
$ tree td
td
├── 192.168.100.10
│ └── data
└── 192.168.100.20
└── data
$ bash maskip.sh td
$ tree td
td
├── xxx.yyy.zzz.10
│ └── data
└── xxx.yyy.zzz.20
└── data
find
と-exec
と短い1行ヘルパースクリプトfind
を一緒に使用すると、結果ツリーがスクリプトで再配置されたが、要求された操作が実行されるという不満があります。 find
から警告を取り除くには、出力を/dev/null
にリダイレクトするだけです。あなたが行うことができます同じtd
例を使用して(と同じ結果で):
$ ip=192.168.100; mask=xxx.yyy.zzz; \
find td -type d -name "*${ip}*" \
-exec ./helper.sh '{}' "$ip" "$mask" \; >/dev/null 2>&1
ヘルパースクリプトは、以上のものになっていなけれ:
#!/bin/bash
mv "$1" "${1/$2/$3}"
注意、rename
コマンドも使用できますが、応じてあなたはutil-linux
からの実装を持っているかどうか、使用法は完全に異なっています。
ご不明な点がありましたら、お気軽にお問い合わせください。
1行のヘルパースクリプトで 'find'を見て、* substring replacement *と' mv'を実行しましたか? –