[英]linux shell get name of file
我正在編寫shell腳本。
我有以下文件:
2012-03-08_16-37-41
2012-03-08_16-37-43
2012-03-08_16-37-46
2012-03-08_16-37-55
簡單的腳本:
#!/bin/bash
FILENAME= ????
echo $FILENAME
並且FILENAME
值應為2012-03-08_16-37-55
(排序文件名列表的最后一個元素)。 此外,文件名的開頭應為2012
。
我怎么能解決這個問題?
FILENAME=$(ls -r 2012* | head -n 1)
您可以使用ls
命令獲取文件,或者只使用“文件globbing”來擴展通配符。
#!/bin/sh
for filename in 2012*; do
echo "File (by globbing) is $filename"
done
ls 2012* | while read filename; do
echo "File (via ls) is $filename"
done
要獲得最后一個,最簡單的方法可能是對ls
輸出進行排序:
filename=`ls -r 2012* | head -1`
但是如果你想弄亂的話,你也可以拖尾。
for filename in 2012*; do
echo "File (by globbing) is $filename"
done | tail -1
f="";
for f in 2012* ;
do
# haha - don't do anything.
dummy=42
done;
echo "now do something with $f"
不使用任何外部命令: set 2012*; eval FILE=\\$$#
set 2012*; eval FILE=\\$$#
。 這是eval
的完全安全使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.