0

Linux コマンド: ディレクトリ内の最新のファイル名を返す次のコマンドを使用しています。

ls -Art | tail -n 1

このコマンドを実行すると、変更された最新のファイルが返されますが、これは実際にはソフト リンクであり、結果でソフト リンクを無視し、ソフト リンク以外のファイル名を取得したいと考えています。

正規表現に一致する最新のファイルファイル名を指定できますか

rum-12.53.2.war
4

2 に答える 2

0

ls の -L オプションは、リンクを逆参照します。つまり、リンクの代わりに参照の情報が表示されます。これは、あなたの望むことですか?または、リンクを完全に無視しますか?

リンクを完全に無視したい場合は、この解決策を使用できますが、より簡単な方法が存在すると確信しています。

a=$( ls -Artl | grep -v "^l" | tail -1 )

aa=()
for i in $(echo $a | tr " " "\n")
do
    aa+=($i)
done

aa_length=${#aa[@]}

echo ${aa[aa_length-1]}

まず、ls の出力を a という変数に格納します。"^l" を grep すると、シンボリック リンクのみが選択され、-v オプションを使用すると、この選択が反転します。したがって、基本的には必要なものがあります。唯一の欠点は、ls に -l オプションを使用する必要があることです。したがって、2 番目の部分では、変数 a を " " で分割し、aa という名前の配列を埋めます (名前が悪くてすみません)。次に、ファイル名である aa の最後の項目のみが必要です。

于 2013-01-03T17:35:36.247 に答える
0

-- ソフトリンクのないディレクトリ内の最新ファイル

ls -ArtL | tail -n 1

-- 拡張子のない最新のファイル

ls -ArtL | sed 's/\(.*\)\..*/\1/' | tail -n 1
于 2013-01-03T18:27:24.903 に答える