[英]How to find the latest folder in a directory and then make a full path accordingly?
我有一個目錄,其中將包含一些文件夾和一些文件。 假設這是我的當前目錄,如下所示,使用pwd
命令-
david@slc4b03c:/bat/data/snapshot$ pwd
/bat/data/snapshot
然后我登錄到machineA
。
/bat/data/snapshot
目錄中將包含一些文件夾和一些文件,如下所示-
david@slc4b03c:/bat/data/snapshot$ ls -lt
total 22400264
drwxr-xr-x 2 cronusapp app 102400 2013-12-22 04:01 20131222
drwxr-xr-x 2 cronusapp app 102400 2013-12-16 03:00 20131215
-rw-r--r-- 1 cronusapp app 26412620 2013-12-13 02:04 weekly_003_5.data
-rw-r--r-- 1 cronusapp app 26492037 2013-12-13 02:02 weekly_003_5.data
-rw-r--r-- 1 cronusapp app 26480695 2013-12-13 02:02 weekly_003_5.data
-rw-r--r-- 1 cronusapp app 26475266 2013-12-13 02:02 weekly_003_5.data
-rw-r--r-- 1 cronusapp app 26471366 2013-12-13 02:02 weekly_003_5.data
-rw-r--r-- 1 cronusapp app 26455311 2013-12-13 02:02 weekly_003_5.data
因此,我有兩個文件夾,分別是20131222
和20131215
如上所示。現在,我要從中提取最新文件夾,該文件夾將是20131222
,因為與20131215
相比它是最新的文件夾,然后像這樣創建完整路徑-
/bat/data/snapshot/20131222/
由於我需要在從該計算機到另一台計算機進行scp時使用完整路徑,
下面是我的Shell腳本,其中我已使用20131222
對當前的最新路徑進行了硬編碼,但通常,我需要使用以下Shell腳本查看哪個文件夾是最新的文件夾,從而制作完整路徑。
#!/bin/bash
readonly LOCATION=/bat/data/snapshot
scp david@slc4b03c.slc.host.com:/bat/data/snapshot/20131222/weekly_003_5.data /data01/primary/.
我不會從machineA運行上面的shell腳本。 我將在另一台機器上運行,假設它是machineB
。
是否可以在shell腳本中執行此操作?
有很多方法可以做到這一點,但是我想快速又臟的方法是結合使用find
和sort
和tail
:
dir=`find $LOCATION -type d | sort | tail -1`
通過將$LOCATION
指定為find
的路徑,您將自動獲得輸出之前的目錄,這將使sort
和tail
為您提供答案,而無需進一步插入當前目錄。
我想,您正在尋找特定目錄上的最新目錄,請使用以下命令獲取最新的Director並分配任何變量
ls | sort | tail -1
dir=$(ls -dt1 "$LOCATION"/*/ | head -n1)
scp "david@slc4b03c.slc.host.com:$dir"/weekly_003_5.data /data01/primary/.
如果最新目錄的名稱包含換行符或其他困難字符,則上述操作將失敗。
如果要按照示例將目錄名稱限制為日期(YYYYMMDD)的形式,請嘗試:
dir=$(ls -dt1 "$LOCATION"/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/ | head -n1)
有關以這種方式使用ls
問題的更多信息,請參見:
此代碼使用find
和NUL分隔的輸出來處理困難的文件名:
dir=$(find "$LOCATION" -mindepth 1 -maxdepth 1 -type d -printf '%T@ %p\0' |sort -znr | sed -zE 's/^[^ ]+ //;q')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.