同一目錄下有3或4個文件,如下所示;
AAA.360p.mp4
AAA.450p.mp4
AAA.720p.mp4
AAA.1080p.mp4
這些檔案的檔案名稱除了幀解析度的表達之外幾乎相同。
(AAA 是檔案名稱的範例。表示這些檔案名稱除了幀解析度之外都是相同的。)
並且 AAA 之間有幾個點。
例如,檔名是這樣的;
Interesting.Comedy.E10.200406.450p.mp4
Interesting.Comedy.E10.200406.720p.mp4
Interesting.Comedy.E10.200406.1080p.mp4
每個文件的大小不同
(檔案大小:360p < 450p < 720p < 1080p) → 始終如此。
我想只保留一個文件,即最大的文件,並刪除所有其他文件。
目錄的位置是/volume1/video/
它將僅在 Synology 上執行該命令。 (使用控制面板中的任務規劃程式)
如果您向我解釋,請在我的案例中包含目錄路徑,如上所述。
(因為我無法應用您推薦給我的程式碼,因為我缺乏理解。我很抱歉)
答案1
下面的程式碼對您很有用,但是您可以建立文件的副本並首先嘗試該目錄。
#!/bin/bash
var=`find /volume1/video/ -printf '%s %p\n'| sort -nr | head -n 1 | awk '{ print $2 }'`
largestfilename=`echo $var | rev | cut -d"/" -f1 | rev`
for i in `ls -S /volume1/video/`
do
if [ ! $i == $largestfilename ]
then
rm -f /volume1/video/$i
fi
done
答案2
LARGEST=$(ls -S /volume1/video/* | head -1)
ls /volume1/video/* | grep -v "$LARGEST" | xargs -d '\n' rm
第一行運行一個命令來列出/volume1/video/
按大小排序的所有文件,並使用列出的管道來head
識別第一個文件。該命令的輸出然後儲存在名為 的變數中$LARGEST
。
第二行再次列出所有文件/volume1/video/
,greps 出最大文件的名稱,然後刪除其餘文件。
編輯:向 xargs 添加 -d 標誌以考慮檔案名稱中潛在的空格。看這個答案了解更多。