bash forコマンドでソート

このQ&Aのポイント
  • 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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

CentOS8にて、実際にやってみました(Azureですが) これでOKなら、シンプルでいいかもですが。 希望通りだったかは、判断をお願いしたく。

webuser
質問者

お礼

ありがとうございます。 下記の感じでいけそうです。 for file in $(ls /dir1/TEST_*.file | sort -r) do echo $file done

その他の回答 (1)

回答No.1

(ls /dir1/TEST_*.file) 私ならこれをパイプにつないで、 sort -r シンプルすぎですがダメ?

webuser
質問者

お礼

ありがとうございます

関連する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で並び替えれるのでしょうか? タイムスタンプはバラバラです。

  • sortコマンドについて

    Unixのソートコマンドを用いて複数ソートキーを指定し、 ソートキーに応じて昇順降順を指定することはできるでしょうか? 宜しくお願い致します。 第一ソートキー 昇順 第二ソートキー 降順 第三ソートキー 昇順 以下を試して見ましたがうまくいきませんでした。 sort -k 1.1,1.2 -r -k 1.4,1.6 -k 1.8,1.9 test.txt

  • コマンド

    以下のシェルスクリプトをパイプ等をつかって1行のコマンドで簡潔に書きたいとき、どう書けばいいでしょうか? $ ./test.sh src dst -- test.sh ---------------- #! /bin/bash src=$1 dst=$2 for i in $(cat ./files) do  何かのコマンド $i $1 $2; done; これを1行のコマンドで書くとしたら??

  • 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 -------------------------- 方法がございましたら、ご教授お願い致します。

  • UNIXでのコマンドエラーについて

    初心者です。 UNIX上で下階層を含めて存在するファイルの数を知りたかったので ネットで検索して for d in `find . -type d`; do echo $d,`ls "$d" | wc -l`; done というコマンドをみつけて実行してみたのですが、 for: コマンドが見つかりません. d: 定義されていない変数です. というエラーとなってしまいます。 UNIX上のなにか制約があるのかどうかよく判りません。 どなたかなぜエラーが出るのかとこのコマンドを正常に実行する方法を教えていただけないでしょうか?

  • forコマンドで属性が隠しファイルを表示するためには?

    forコマンドで属性が隠しファイルを表示するためには? 下記のような、batファイルでファイルをリストアップすると、 属性が隠しファイル、もしくはシステムファイル等がListUp表示されません。 如何なるファイルでもListUp表示できるようにする方法を教えてください。 xyz.bat @echo off for %%i in (*.*) do echo %%i >> test.txt @echo on @echo 完了 pause

  • 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 :-------------------------------------------

専門家に質問してみよう