1. 程式人生 > >linux下如何將當前目錄的檔名存到一個文字檔案裡

linux下如何將當前目錄的檔名存到一個文字檔案裡

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