我試圖dummy*在名為dummy. 然后我需要根據創建時間對它們進行排序并獲取第 10 個檔案。我正在嘗試的命令是:
find -L /home/myname/dummy/dummy* -maxdepth 0 -type f -printf '%T@ %p\n' | sort -n | cut -d' ' -f 2- | head -n 10 -exec readlink -f {} \;
但這似乎不適用于以下錯誤:
head: invalid option -- 'e'
Try 'head --help' for more information.
如何使 bash 不-exec作為head命令的一部分讀取?
更新1:
嘗試了以下方法:
find -L /home/nutanix/dummy/dummy* -maxdepth 0 -type f -exec readlink -f {} \; -printf '%T@ %p\n' | sort -n | cut -d' ' -f 2- | head -n 10
但這不是根據時間戳排序,因為 find 和 printf 都在列印檔案,而 sort 正在對它們進行排序。
dummy 中的檔案如下:dummy1、dummy2、dummy3 等。這是它們的創建順序。
uj5u.com熱心網友回復:
如何讓 bash 不將 -exec 作為 head 命令的一部分讀取?
在-exec和隨后的爭論似乎意在指向find。該find命令在 first 處停止|,因此您需要在此之前移動這些引數:
find -L /home/myname/dummy/dummy* -maxdepth 0 -type f -printf '%T@ %p\n' -exec readlink -f {} \; | sort -n | cut -d' ' -f 2- | head -n 10
但是,檔案詳細資訊和結果都 沒有多大意義。可能您想對每個使它過去的檔案名運行。在這種情況下,您可能需要查看命令,它的作用正是將從標準輸入讀取的資料轉換為命令的引數。例如:-printf-exec readlinkreadlinkheadxargs
find -L /home/myname/dummy/dummy* -maxdepth 0 -type f -printf '%T@ %p\n' |
sort -n |
cut -d' ' -f 2- |
head -n 10 |
xargs -rd '\n' readlink -f
uj5u.com熱心網友回復:
我認為你在這里把事情復雜化了。使用 just lsandhead應該可以得到你想要的結果:
ls -lt /home/myname/dummy/dummy* | head -10
要專門按 ctime 排序,請使用以下-c標志ls:
ls -ltc /home/myname/dummy/dummy* | head -10
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/388386.html
