我一直在嘗試使用命令列來洗掉所有子目錄中名為 s_1_1102_c.jpg 的所有檔案。
這個問題類似于我需要如何洗掉具有特定名稱的檔案夾,但它正在洗掉目錄,我只想洗掉名稱為 s_1_1102_c.jpg 的檔案。
我需要從 L001 目錄下的 260 個子目錄中洗掉該檔案。我的目錄結構是這樣的:
L001
C5.1
s_1_1101_a.jpg
s_1_1101_c.jpg
s_1_1101_g.jpg
s_1_1101_t.jpg
s_1_1102_a.jpg
s_1_1102_c.jpg
s_1_1102_g.jpg
s_1_1102_t.jpg
s_1_1103_a.jpg
s_1_1103_c.jpg
s_1_1103_g.jpg
s_1_1103_t.jpg
C6.1
s_1_1101_a.jpg
s_1_1101_c.jpg
s_1_1101_g.jpg
s_1_1101_t.jpg
s_1_1102_a.jpg
s_1_1102_c.jpg
s_1_1102_g.jpg
s_1_1102_t.jpg
s_1_1103_a.jpg
s_1_1103_c.jpg
s_1_1103_g.jpg
s_1_1103_t.jpg
最終我需要從所有子目錄中洗掉幾個檔案(s_1_1101_g.jpg、s_1_1101_t.jpg、s_1_1102_a.jpg、s_1_1102_c.jpg、s_1_1102_g.jpg、s_1_1102_t.jpg)。所以也許有一種方法可以提供我需要洗掉的檔案名串列。
如何洗掉這些檔案?
uj5u.com熱心網友回復:
find . -name "s_1_1102_c.jpg" -exec rm -f {} \;
注意:這將在當前檔案的任何子目錄中查找并洗掉該檔案。因此,您可以L001在其他任何您想要執行此操作的地方執行它。
uj5u.com熱心網友回復:
for i in s_1_1101_g.jpg s_1_1101_t.jpg s_1_1102_a.jpg s_1_1102_c.jpg s_1_1102_g.jpg s_1_1102_t.jpg; do
echo rm L001/*/"$i";
done
如果輸出看起來不錯,請洗掉echo.
uj5u.com熱心網友回復:
我用來洗掉檔案的最后一種方法是由 @Peter - Reinstate Monica
for f in s_1_1101_t.jpg s_1_1102_a.jpg s_1_1102_c.jpg s_1_1102_g.jpg s_1_1102_t.jpg s_1_1103_a.jpg s_1_1103_c.jpg s_1_1103_g.jpg s_1_1103_t.jpg s_1_1104_a.jpg s_1_1104_c.jpg s_1_1104_g.jpg s_1_1104_t.jpg s_1_2101_g.jpg s_1_2101_t.jpg s_1_2102_a.jpg s_1_2102_c.jpg s_1_2102_g.jpg s_1_2102_t.jpg s_1_2103_a.jpg s_1_2103_c.jpg s_1_2103_g.jpg s_1_2103_t.jpg s_1_2104_g.jpg s_1_2104_t.jpg; do find /hpc/home/L001 -name $f -delete; done
我擔心我的檔案串列會太長,但它在這種情況下有效。
uj5u.com熱心網友回復:
與bash:
echo rm L001/*/{s_1_1101_g.jpg,s_1_1101_t.jpg,s_1_1102_a.jpg,s_1_1102_c.jpg,s_1_1102_g.jpg,s_1_1102_t.jpg}
或者
shopt -s globstar
echo rm **/{s_1_1101_g.jpg,s_1_1101_t.jpg,s_1_1102_a.jpg,s_1_1102_c.jpg,s_1_1102_g.jpg,s_1_1102_t.jpg}
如果輸出看起來不錯,請洗掉echo.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/408877.html
標籤:
