5638


abd shellにて、/proc/sys/net/ipv4 の下にあるファイル全てに対してcatを実行したいです。

ターゲットのフォルダに移動

[code]

    adb shell
    cd /proc/sys/net/ipv4
    
[/code]

フォルダ内のファイル

[code]

    ls
    tcp_wmem
    tcp_keepalive_intvl
    tcp_congestion_control
    .
    .
    .
    
[/code]

１つのファイルだけcatする場合

[code]

    cat tcp_congestion_control
    $cubic
    
[/code]

期待する結果

[code]

    tcp_wmem                              
    262200  524400  2560000
    tcp_keepalive_intvl 
    75
    tcp_congestion_control
    cubic
    
[/code]

試したコードとエラー

[code]

    $ find /proc/sys/net/ipv4/  -type f -exec cat {} \;
          /system/bin/sh: find: not found
    
[/code]


CC BY-SA 3.0
2015-01-30T07:12:05.470
5608
2015-01-30T22:12:00.587
2015-01-30T22:12:00.587
3061
7590
question
android linux sh
find, xargs なしでフォルダの下の全てのファイルの中身をcatしたい


下記のコマンドでどうでしょうか？

[code]

    adb shell for file in `ls /proc/sys/net/ipv4/*`; do echo $file; cat $file; done
    
[/code]


CC BY-SA 3.0
2015-01-30T08:08:39.287
5611
2015-01-30T08:08:39.287
7956
5608
answer


`/proc/sys/net/ipv4` 直下のファイルだけでよければ簡単ですね。

[code]

    $ for f in /proc/sys/net/ipv4/*; do [ -f "$f" ] || continue; echo "$f"; cat "$f"; done
    
[/code]

再帰的にファイルを探したい、かつ `find` が利用できなければ、関数でも用意しましょう。例えば次のようになります。

[code]

    $ ff() { for p in "$@"; do [ -d "$p" ] && { ff "$p"/*; continue; }; echo "$p"; done; }
    
[/code]

この関数 `ff` (find file から名付けました)は、引数に指定したパスから再帰的にファイル (ディレクトリ以外) を探して表示します。

[code]

    $ ff /proc/sys/net/ipv4
    
[/code]

あとは適当にループして順次処理するだけです。

[code]

    $ ff /proc/sys/net/ipv4 |while read f; do echo "$f"; cat "$f"; done
    
[/code]


CC BY-SA 3.0
2015-01-30T17:53:36.053
5638
2015-01-30T17:53:36.053
3061
5608
answer