[英]bash shell script copy first file with certain extension to current directory
我有一個目錄充滿了多個.c源文件,我試圖在另一個目錄中編寫一個shell腳本,該目錄將從前一個目錄復制第一個.c文件,編譯它,運行它並刪除它。 現在我了解了如何編譯,運行和刪除文件,但是如果在目錄中有多個具有相同擴展名的文件時,如何在不知道其名稱的情況下只獲取一個.c文件我感到困惑?
一種方法是使用循環,然后在第一次迭代后中斷:
for f in dir/*.c; do
cp "$f" .
# compile
# run
# delete
break
done
您尚未指定如何定義“第一個”,但您可以使用set
來實現此目的:
set -- source_dir/*.c
cp "$1" .
# ...
rm "$1"
假設您通過“first”表示排序列表中的第一個文件。
for循環工作正常,但你也可以這樣做:
file=`ls -1 dir/*.c | head -1`
# compile $file && run $file && delete $file
在bash中你可以使用數組:
files=(*.c)
echo "compiling ${files[0]}"
compile ${files[0]}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.