別のディレクトリのファイルにlsを書き込むBashスクリプト

別のディレクトリのファイルにlsを書き込むBashスクリプト

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ようにパイプします。 '出力を名前付きファイルに送信します。」lslscd

おそらくあなたが望むものは次のとおりです。

( 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

おすすめ記事