Bashで:フィルタを適用し、名前の日付で並べ替え、最新の日付の名前を返します。

Bashで:フィルタを適用し、名前の日付で並べ替え、最新の日付の名前を返します。

Bashはファイル名のリストを.csvでのみフィルタリングし、日付の順序(タイムスタンプではなく名前の日付)に基づいてソートし、名前の日付順序に基づいて最新のファイル名を返そうとします。

[root@server test2]# curl -l "ftp.fakeurl.com.au/In Stock Daily CSV/"  --user username:password
InStockDaily01.07.19.csv
InStockDaily01.07.19.xls
InStockDaily02.07.19.csv
InStockDaily02.07.19.xls
InStockDaily03.06.19.csv
InStockDaily03.06.19.xls
InStockDaily03.07.19.csv
InStockDaily03.07.19.xls
InStockDaily04.06.19.csv
InStockDaily04.06.19.xls
InStockDaily04.07.19.csv
InStockDaily04.07.19.xls
InStockDaily05.06.19.csv
InStockDaily05.06.19.xls
InStockDaily05.07.19.csv
InStockDaily05.07.19.xls
InStockDaily06.06.19.csv
InStockDaily06.06.19.xls
InStockDaily07.06.19.csv
InStockDaily07.06.19.xls
InStockDaily08.07.19.csv
InStockDaily08.07.19.xlsx
InStockDaily09.07.19.csv
InStockDaily09.07.19.xls
InStockDaily10.07.19.csv
InStockDaily10.07.19.xls
InStockDaily11.06.19.csv

ベストアンサー1

この試み:

curl -l "ftp.fakeurl.com.au/In Stock Daily CSV/"  --user username:password |
  grep '\.csv$' |
  sort -t. -k3,3 -k2,2 -k1,1 |
  tail -n 1
  • grep '\.csv$'CSV行のインポート
  • sort -t. -k3,3 -k2,2 -k1,1フィールド区切り記号として、.3 番目のフィールド年、2 番目のフィールド月、日付を持つ最初のフィールドでInStockDailyXXソート
  • tail -n 1最後の行(最新の日付)を取得する

おすすめ記事