Shellscript循环文件夹中的所有文件

skl*_*ine 23 bash shell loops

我想写一个shellcript,它将循环遍历文件夹中的所有文件并回显"put $ {filename}".谁能指出我正确的方向?

Oli*_*rth 30

对于文件和目录,不是递归的

for filename in *; do echo "put ${filename}"; done
Run Code Online (Sandbox Code Playgroud)

仅适用于文件(不包括文件夹),不适用于递归

for file in *; do 
    if [ -f "$file" ]; then 
        echo "$file" 
    fi 
done
Run Code Online (Sandbox Code Playgroud)

对于递归解决方案,请参阅Bennet Yee的回答.


小智 6

递归地,包括子目录中的文件?

find dir -type f -exec echo "put {}" \;
Run Code Online (Sandbox Code Playgroud)

只有该目录中的文件?

find dir -maxdepth 1 -type f -exec echo "put {}" \;
Run Code Online (Sandbox Code Playgroud)

  • 傻我, dir 你的意思是用你想要的目录替换。不过,还是有点混乱! (2认同)
  • 这部分的作用是什么?“put {}” 大括号 {} 的特别含义 (2认同)

Kev*_*vin 6

对于当前目录中的所有文件夹和文件

for file in *; do
    echo "put $file"
done
Run Code Online (Sandbox Code Playgroud)

或者,如果您只想包含子目录和文件:

find . -type f -exec echo put {} \;
Run Code Online (Sandbox Code Playgroud)

如果要包含文件夹本身,请取出该-type f部件.