2013-03-19 203 views
1

我正在尝试创建一个简单的bash脚本,它将回显文件夹中的所有文件,包括子文件夹。以下是我的代码。但我得到的输出就是LS $ fromFolder如何获取文件夹的文件和子文件夹

#! /bin/bash 

fromFolder="~/proj/activex" 
toFolder="~/proj/outgoing" 

files='ls $fromFolder' 

for file in $files 
do 
    echo $file 
done 

感谢

+1

怎么样'找到.' – 2013-03-19 11:42:14

回答

3

这里不需要使用ls命令。你可以简单地取代你的for循环:

for file in ~/proj/outgoing/* 
do 
    echo $file 
done 
+0

它的工作原理。但是,当我使用变量来存储传出文件夹路径,然后使用它不起作用。以下是我尝试的代码。对于$ outgoingFolder中的文件,outgoingFolder =“〜/ proj/outgoing/*”做... – user466663 2013-03-19 12:19:25

+2

将'*'或其他元字符放在双引号中会阻止它们的扩展。在“$ dir”/ *中使用'for file;做...;完成' – 2013-03-19 12:26:23

+0

谢谢@JoshCartwright。我认为OP得到了他评论的答案。 – anubhava 2013-03-19 13:04:04

0
find $fromfolder -print 

将打印的所有文件和子目录的$ fromfolder。

此列出常规文件

find $fromfolder -print -type f

此列出目录

find $fromfolder -print -type d

在你的代码 - 这有一个问题 files='ls $fromFolder'

$fromfolder将永远不会被“翻译“通过它进入它的价值因为单引号引起的轰动。

-1

您需要用双引号,而不是单打,这将允许外壳扩展fromFolder变量:

files="ls $fromFolder" 

虽然anubhava的解决方案是更好的

+0

这仍然不会使'files'成为'$ fromFolder'中包含的文件的名称列表。 – chepner 2013-03-19 12:04:55

相关问题