簡體   English   中英

如何找到目錄中的最新文件夾,然后相應地創建完整路徑?

[英]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

因此,我有兩個文件夾,分別是2013122220131215如上所示。現在,我要從中提取最新文件夾,該文件夾將是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腳本中執行此操作?

有很多方法可以做到這一點,但是我想快速又臟的方法是結合使用findsorttail

dir=`find $LOCATION -type d | sort | tail -1`

通過將$LOCATION指定為find的路徑,您將自動獲得輸出之前的目錄,這將使sorttail為您提供答案,而無需進一步插入當前目錄。

我想,您正在尋找特定目錄上的最新目錄,請使用以下命令獲取最新的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問題的更多信息,請參見:

更強大的解決方案(需要GNU工具)

此代碼使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM