ls
特定のディレクトリ、そのディレクトリのファイルに移動し、別のディレクトリのファイルに書き込むスクリプトを作成しようとしています。これまで私が思いついた内容は次のとおりです。
#!/bin/bash
getDisk1(){
cd cwiczenia | ls >> cd /home/kai/listaplikow.txt
return
}
getDisk2(){
cd Pictures | ls >> cd /home/kai/listaplikow.txt
return
}
getDisk1
getDisk2
フォルダ内でスクリプトを実行していますが、/home/kai/
ターゲットgetDisk2
に結果は記録されません。誰でもこの問題を解決するのに役立ちますか?
ベストアンサー1
あなたの命令は言わないでください。
cd Pictures | ls >> cd /home/kai/listaplikow.txt
「Pictures
ディレクトリを入力してください。コマンドの(空の)出力を標準入力を使用しないcd
ようにパイプします。 '出力を名前付きファイルに送信します。」ls
ls
cd
おそらくあなたが望むものは次のとおりです。
( cd Pictures; ls >> /home/kai/listaplikow.txt )
これが括弧内にある理由は、サブシェルで実行され、基本スクリプトの作業ディレクトリを変更しようとしないためです。
それにもかかわらず、ls
一般的な出力を解析するのは悪い考えです。次のようにすることをお勧めします。
find Pictures/ -maxdepth 1 >> /home/kai/listaplikow.txt
ファイルのあるパスを見たくない場合は、次のようにfind
実際にファイルのリストを取得することをお勧めします。
find Pictures/ -maxdepth 1 -print0 | xargs -0 -L1 basename >> /home/kai/listaplikow.txt