我想清理一個包含視頻的檔案夾。我有一堆以不同解析度下載的視頻,所以每個檔案都以相同的名稱開頭,然后以“_480p”或“_720p”等結尾。
我只想保留每個此類集合中最大的檔案。
所以我正在尋找一種方法來洗掉基于
- 檢查“_”之前的名稱是否相同
- 如果為真,則洗掉除最大檔案外的所有檔案
uj5u.com熱心網友回復:
我會嘗試:
- 列出所有非最小檔案(非 480p):
*_720p*和*_1080p* - 對于他們每個人,用所有可能的較小解析度替換名稱中的
*_720p*/*_1080p* - 并嘗試洗掉這些檔案
rm -f,無論它們是否存在
#!/bin/bash -e
for file in *_1080p*; do
rm -f "${file//_1080p/_720p}"
rm -f "${file//_1080p/_480p}"
done
for file in *_720p*; do
rm -f "${file//_720p/_480p}"
done
uj5u.com熱心網友回復:
這個 shell 腳本可能是你想要的:
previous_prefix=
for file in *_[0-9]*[0-9]p*; do
prefix=${file%_*}
resolution=${file##*_}
resolution=${resolution%%p*}
if [ "$prefix" = "$previous_prefix" ]; then
if [ "$resolution" -gt "$greater_resolution" ]; then
file_to_be_removed=$greater_file
greater_file=$file
greater_resolution=$resolution
else
file_to_be_removed=$file
fi
echo rm -- "$file_to_be_removed"
else
greater_resolution=$resolution
greater_file=$file
previous_prefix=$prefix
fi
done
echo如果輸出看起來不錯,請洗掉。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/407718.html
標籤:
上一篇:如何用幾個月和點數來回圈幾年?
