linux下如何將當前目錄的檔名存到一個文字檔案裡
阿新 • • 發佈:2019-02-16
public
class
GetFileName
{
public
static
String [] getFileName(String path)
{
File file =
new
File(path);
String [] fileName = file.list();
return
fileName;
}
public
static
void
getAllFileName(String path,ArrayList<String> fileName)
{
File file =
new
File(path);
File [] files = file.listFiles();
String [] names = file.list();
if
(names !=
null
)
fileName.addAll(Arrays.asList(names));
for
(File a:files)
{
if
(a.isDirectory())
{
getAllFileName(a.getAbsolutePath(),fileName);
}
}
}
public
static
void
main(String[] args)
{
String [] fileName = getFileName(
"F:\\xiaoshuo"
);
for
(String name:fileName)
{
System.out.println(name);
}
System.out.println(
"--------------------------------"
);
ArrayList<String> listFileName =
new
ArrayList<String>();
getAllFileName(
"F:\\xiaoshuo"
,listFileName);
for
(String name:listFileName)
{
System.out.println(name);
}
}
}
Linux命令列引數數目是有限的,執行ls *.gz時,當萬用字元展開後,ls命令的引數列表超長了,導致執行出錯。
如果只是想得到當前目錄下(不包括子目錄)的相關檔案時,可以這樣:
1 |
ls -1 | grep ".gz$" > 1.txt
|
如果想得到當前目錄下,包括子目錄中的相關檔案時,應該用find命令:
1 |
find . -type f -name "*.gz" > 1.txt
|
linux 獲取目錄下所有檔名稱並遍歷
#!/bin/sh
cd /home/gbase/XL_WORK/data/dns/20160125/16/;
/*獲取目錄下的所有檔名稱,儲存到一個變數中去*/
file_name_tmp=`ls /home/gbase/XL_WORK/data/dns/20160125/16/`;
/*將這個變數中儲存的檔名稱轉換為陣列*/
file_names=($(echo $file_name_tmp));
/*遍歷這個陣列*/
for file_name in ${file_names[@]}
do
echo $file_name
/*等待2秒*/
sleep 2s
done