linux - 显示目录存在的位置

标签 linux bash shell

我有一堆相对较新的代码,即隐藏了很多错误,我有这样的代码:
if [ -d $DATA_ROOT/$name ],我已经完成研究并理解这意味着如果目录存在但现在我正在尝试打印出那些存在的目录以解决问题。 尝试使用

    echo `First: $DATA_ROOT`
    echo `Second: $name`
    echo `Last: $DATA_ROOT/$name`
    exit 1;

Got command not found for all,该代码旨在通过提取所有文件来修复我正在尝试修复的错误,但最终并没有提取所有文件,并以下面的数据提取失败错误结束,代码:

num_files=`find $DATA_ROOT/$name -name '*' | wc -l`
if [ ! $num_files -eq $extract_file ] ; then
    echo "Data extraction failed! Extracted $num_files instead of $extract_file"
    exit 1;

我只是想正确提取所有文件,请问如何做到这一点?

最佳答案

您使用的 back-ping 表示“将此作为命令执行”

echo `First: $DATA_ROOT`
echo `Second: $name`
echo `Last: $DATA_ROOT/$name`

将尝试执行名为“First:”的命令,该命令不存在。

而是使用双引号,因为它们允许变量替换,就像这样并且不会尝试将其作为命令执行

echo "First: $DATA_ROOT"
echo "Second: $name"
echo "Last: $DATA_ROOT/$name"

还有

find $DATA_ROOT/$name -name '*'

可能不是您想要的,-name '*' 是默认值,因此您不需要它。正如其他人指出的那样, find 将返回所有内容,包括目录和特殊文件(如果有的话)。 find "$DATA_ROOT/$name"-type f 如果您只想列出文件或 find "$DATA_ROOT/$name"-type d 如果你只想列出目录。也总是在你的 "$DATA_ROOT/$name" 周围使用双引号,因为它允许你处理带空格的文件名——如果你有一个包含空格的 $name否则你会失败。

关于linux - 显示目录存在的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41078744/

相关文章:

c++ - devIL .so 在 ubuntu 上我把它们放在哪里 - 运行时错误

linux - (loopcount=loopcount+1) 和 ((loopcount=loopcount+1)) 有什么区别?

linux - Scanf 汇编中的 char 指针

java - 每次使用特定参数启动 Java

java - SonarQube 因 java.lang.StackOverflowError 失败 - 如何确定导致错误的特定文件

bash - 为什么我的带反引号的 if 语句不能正常工作?

macos - shc 在 Mac 上显示 'Killed: 9' 错误

linux - 了解 xargs 选项 -i 和 -t

linux - 我正在通过 shell 处理文件 :output. txt 但我不知道为什么我的代码无法读取第一行

linux - 从文件中获取一行并将其作为列添加到另一个文件中