簡體   English   中英

如何循環遍歷某個目錄中的所有文件(遞歸)

[英]How to loop through all files (recursively) in a certain directory

我的任務是循環遍歷某個目錄中的所有文件(遞歸)。 目錄路徑在程序的第一個參數中指定。 現在我有以下一行:

find * -type f -exec echo "put {}" \;

,但我不知道如何將目錄路徑指定為第一個參數,如果沒有參數,如何離開*。

如果我這樣做:

$YOUR_DIR = "*";
find "$YOUR_DIR" -type f -exec echo "put {}" \;

它不工作。

請幫我。

腳本的參數在數字上標識為${1}${2}等(或$1$2等)。 您還可以使用${*} (或$* )引用所有參數。 但是您使用的是* ,前面沒有美元符號。 這具有完全不同的含義。 它的意思是“當前目錄中的所有條目”。

你真的應該只使用一個目錄,所以檢查第一個參數,並確保它是一個目錄,然后再使用它:

#!/bin/bash

if [ ! -d "${1}" ]; then
  echo "'${1}' is not a directory."
  exit 1
fi

find "${1}" -type f -exec echo "put {}" \;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM