bash forコマンドでソート
- bashのforコマンドを使用して、指定したディレクトリ内のファイル名を降順でソートして順次読み込む方法について学びます。
- lsコマンドを使用してファイル名を取得し、その結果を基にforループを回すことで、指定したディレクトリ内のファイルを順次読み込むことができます。
- さらに、lsコマンドの結果をsortコマンドで降順にソートすることで、ファイル名を降順で読み込むことができます。
- ベストアンサー
bash forコマンドでソート
bash forコマンドでソート CentOS8 bashの forコマンドで、ディレクトリ内のファイル名を部分指定した降順でソートした状態で順次読み込みしたいです。 <ファイル> aaa.dat bbbb_0001.dat TEST_0001.file TEST_0002.file TEST_0003.file <アウトプット> TEST_0003.file TEST_0002.file TEST_0001.file 基本的な読込と、lsコマンドの結果を基に読み込む方法はわかりましたが、これに降順ソートを加えるにはどうすれば良いでしょうか? <基本的な読込> for file in /dir1/TEST_*.file do echo $file done <lsコマンドの結果を基に読込> for file in $(ls /dir1/TEST_*.file) do echo $file done
- webuser
- お礼率85% (1391/1635)
- その他(プログラミング・開発)
- 回答数2
- ありがとう数3
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
CentOS8にて、実際にやってみました(Azureですが) これでOKなら、シンプルでいいかもですが。 希望通りだったかは、判断をお願いしたく。
その他の回答 (1)
- AsarKingChang
- ベストアンサー率46% (3467/7472)
(ls /dir1/TEST_*.file) 私ならこれをパイプにつないで、 sort -r シンプルすぎですがダメ?
お礼
ありがとうございます
関連するQ&A
- bashでタイムスタンプ比較して表示
bashでカレントディレクトリで更新日が2004年2月以降のファイルだけを 表示する場合どうすればよいでしょうか? 宜しくお願い致します。 filenames=$(ls) for temp in ${filenames[@]};do echo "$temp" どうすれば? done
- ベストアンサー
- その他(プログラミング・開発)
- bashシェル: 引用符で囲まない文字列
bashシェルにおいて、パスを表す文字列を引用符で囲まないで変数に代入すると絶対パスに展開されて代入されます。 引用符で囲んで代入すると展開されませんので、「パスを変数に代入する時は引用符で囲まない」と覚えておけばよいように思いますが、「引用符で囲まない文字列はパスを表す」ということなのでしょうか。 (引用符で囲んだ場合) $ DIR="~/" $ echo $DIR ~/ (次のようにしてもディレクトリ下のファイル名を得られない) for FILE in ${DIR}* ; do echo ${FILE}; done (引用符で囲まない場合) $ DIR=~/ $ echo $DIR /home/taro/ 2014年9月23日
- ベストアンサー
- その他(プログラミング・開発)
- sortコマンドの使い方
hoge234.dat hoge1.dat hoge8.dat hoge12.dat というファイルを作ったのですが、 これを hoge1.dat hoge8.dat hoge12.dat hoge234.dat という順番で読み込んで処理がしたいのですが、 どうすれば並びかえられるでしょうか? sortじゃなくてlsで並び替えれるのでしょうか? タイムスタンプはバラバラです。
- ベストアンサー
- Solaris系OS
- sortコマンドについて
Unixのソートコマンドを用いて複数ソートキーを指定し、 ソートキーに応じて昇順降順を指定することはできるでしょうか? 宜しくお願い致します。 第一ソートキー 昇順 第二ソートキー 降順 第三ソートキー 昇順 以下を試して見ましたがうまくいきませんでした。 sort -k 1.1,1.2 -r -k 1.4,1.6 -k 1.8,1.9 test.txt
- 締切済み
- Linux系OS
- bashで変数を含んだファイル読み込み
お世話になります。 外部読み込みファイルの中に変数やコマンドをセットして利用したいのですが、それはできないのでしょうか? ----test.txt messages-${testdate} `hostname`.log -------------------------- ----test.sh testdate=`date +%Y%m%d` for line in `cat test.txt` do echo $line done -------------------------- ----出力 messages-${testdate} `hostname`.log -------------------------- ----望む出力結果 messages-20150521 servername.log -------------------------- 方法がございましたら、ご教授お願い致します。
- ベストアンサー
- Linux系OS
- UNIXでのコマンドエラーについて
初心者です。 UNIX上で下階層を含めて存在するファイルの数を知りたかったので ネットで検索して for d in `find . -type d`; do echo $d,`ls "$d" | wc -l`; done というコマンドをみつけて実行してみたのですが、 for: コマンドが見つかりません. d: 定義されていない変数です. というエラーとなってしまいます。 UNIX上のなにか制約があるのかどうかよく判りません。 どなたかなぜエラーが出るのかとこのコマンドを正常に実行する方法を教えていただけないでしょうか?
- ベストアンサー
- Linux系OS
- forコマンドで属性が隠しファイルを表示するためには?
forコマンドで属性が隠しファイルを表示するためには? 下記のような、batファイルでファイルをリストアップすると、 属性が隠しファイル、もしくはシステムファイル等がListUp表示されません。 如何なるファイルでもListUp表示できるようにする方法を教えてください。 xyz.bat @echo off for %%i in (*.*) do echo %%i >> test.txt @echo on @echo 完了 pause
- 締切済み
- Windows XP
- Sortコマンド以外で行をソートする方法
Sortコマンドを使ってテキストファイル内の行をソートしていたのですが、扱うテキストファイルの内容によってエラーが出てしまい、エラーメッセージをWEBで検索して書かれていた対策をしたのですがうまく行きませんでした。 ですので、Sort以外のコマンドで、テキストファイル内の行を昇順と降順でソートしたいと考えているのですが、何か方法はないでしょうか。 Windowsのコマンドプロンプトで使用出来るものであれば、AWKでもPerlでもその他のコマンドでも構いませんし、スクリプトファイルを読み込めるコマンドでしたらスクリプトでの書き方でも結構ですので、ご存知の方がおられましたら教えて頂けないでしょうか。
- ベストアンサー
- その他(プログラミング・開発)
- MSDOSバッチコマンド for-do
過去31日間、today.dat を保存するバッチコマンドを、WinXPで組みましたが、doループ内で、環境変数:nextday (rename old%%i.dat old%nextday%.dat) が、正しく帰ってきません。 アドバイスお願いします。 :------------------------------------------- @echo off setlocal set maxday=30 set delday=31 cls echo 開始します。 Enter キーを 押してください。 pause > nul echo delete old%delday%.dat for /l %%i in (%maxday%,-1,1) do ( set /a nextday=%%i+1 echo. set nextday echo rename old%%i.dat old%nextday%.dat ) echo. echo copy today.dat old1.dat echo. echo 終了しました。 Enter キーを 押してください。 pause > nul endlocal :-------------------------------------------
- ベストアンサー
- その他([技術者向] コンピューター)
お礼
ありがとうございます。 下記の感じでいけそうです。 for file in $(ls /dir1/TEST_*.file | sort -r) do echo $file done