[英]Using LS for a specific path & file type without returing full file path?
我正在編寫一個bash腳本,想使用LS給它提供一個path / *。tar,並使其僅返回文件名而不是完整路徑和文件名,以將文件名通過讀入數組進行傳遞,以下是發生的情況終奌站:
admin@linuxbox:~$ ls /home/admin/Backup/
0_BuIndex.txt.backup Backup1376238064.tar Backup1376239611.tar Backup1376241919.tar
Backup1376167035.tar Backup1376238960.tar Backup1376240158.tar Backup1376243097.tar
Backup1376168581.tar Backup1376239110.tar Backup1376241421.tar
Backup1376237070.tar Backup1376239350.tar Backup1376241489.tar
Backup1376237928.tar Backup1376239479.tar Backup1376241608.tar
admin@linuxbox:~$ ls /home/admin/Backup/*.tar
/home/admin/Backup/Backup1376167035.tar /home/admin/Backup/Backup1376239479.tar
/home/admin/Backup/Backup1376168581.tar /home/admin/Backup/Backup1376239611.tar
/home/admin/Backup/Backup1376237070.tar /home/admin/Backup/Backup1376240158.tar
/home/admin/Backup/Backup1376237928.tar /home/admin/Backup/Backup1376241421.tar
/home/admin/Backup/Backup1376238064.tar /home/admin/Backup/Backup1376241489.tar
/home/admin/Backup/Backup1376238960.tar /home/admin/Backup/Backup1376241608.tar
/home/admin/Backup/Backup1376239110.tar /home/admin/Backup/Backup1376241919.tar
/home/admin/Backup/Backup1376239350.tar /home/admin/Backup/Backup1376243097.tar
我想使用第二條命令,但只返回沒有路徑的文件名,我現在的工作是使用
read -r -a TarArray <<< `ls -1 /home/admin/Backup | grep "tar"`
但我希望找到一種不需要我通過grep進行傳遞的解決方案。
有任何想法嗎? 謝謝大家!
您可能會為此使用find
:
find /home/admin/Backup -name \*.tar -printf '%f\n'
從手冊頁:
-printf format
True; print format on the standard output,
interpreting `\' escapes and `%' directives.
...
%f File's name with any leading directories
removed (only the last element).
所以我知道答案已經選擇了,但是這里是一個使用ls
的選項,以防萬一您好奇:
ls /home/admin/Backup/*.tar | awk -F/ '{print $NF}'
從目錄運行ls
命令:
( cd /home/admin/Backup ; ls *.tar )
但是您確實不需要為此使用ls
命令。 Shell已經為您擴展了*tar
通配符; ls
在這種情況下ls
就是打印參數。 所以:
( cd /home/admin/Backup ; echo *.tar )
(順便說一句,使用grep "tar"
命令將在名稱中任何位置列出所有帶有"tar"
文件,而不僅僅是名稱以.tar
結尾的文件。如果要使用grep
,則需要grep '\\.tar$'
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.