相关疑难解决方法(0)

如何遍历find返回的文件名?

x=$(find . -name "*.txt")
echo $x
Run Code Online (Sandbox Code Playgroud)

如果我在Bash shell中运行上面的代码,我得到的是一个包含多个文件名的字符串,用空格分隔,而不是列表.

当然,我可以进一步将它们分开来获取列表,但我确信有更好的方法可以做到这一点.

那么循环find执行命令结果的最佳方法是什么?

bash find

189
推荐指数
8
解决办法
19万
查看次数

如何从查找"类型d"中排除此/ current/dot文件夹

find . -type d
Run Code Online (Sandbox Code Playgroud)

可用于查找某些起点下方的所有目录.但它.也会返回当前目录(),这可能是不受欢迎的.如何排除它?

directory shell find

172
推荐指数
4
解决办法
6万
查看次数

何时在shell变量周围包装引号?

有人能告诉我是否应该在shell脚本中包含变量的引号?

例如,以下是正确的:

xdg-open $URL 
[ $? -eq 2 ]
Run Code Online (Sandbox Code Playgroud)

要么

xdg-open "$URL"
[ "$?" -eq "2" ]
Run Code Online (Sandbox Code Playgroud)

如果是这样,为什么?

unix linux bash shell quotes

145
推荐指数
4
解决办法
5万
查看次数

如何只列出文件而不是目录Bash的目录?

如何列出一个文件夹的所有文件,但不能列出其文件夹或子文件.换句话说:我如何只列出文件?

bash file-listing

69
推荐指数
4
解决办法
8万
查看次数

在shell脚本的for循环中迭代行而不是单词

以下是用于读取框中存在的所有DSF的shell脚本.但由于该行有空格,因此它以不同的行显示.对于那些不理解的人ioscan -m dsf,替换它ls -ltr,然后输出是这样的权限和名称显示在不同的行,但我希望它们在同一行.

#!/usr/bin/ksh

for a in `ioscan -m dsf`
do
 echo  $a
done
Run Code Online (Sandbox Code Playgroud)

linux shell

31
推荐指数
2
解决办法
2万
查看次数

bash:将'\n'分隔的字符串转换为数组

我有这个脚本 -

nmapout=`sudo nmap -sP 10.0.0.0/24`
names=`echo "$nmapout" | grep "MAC" | grep -o '(.\+)'`
echo "$names"
Run Code Online (Sandbox Code Playgroud)

现在$names变量包含用换行符分隔的字符串 -

>_
 (Netgear)
 (Hon Hai Precision Ind. Co.)
 (Apple)
Run Code Online (Sandbox Code Playgroud)

我尝试用子串方法进行数组转换 -

names=(${names//\\n/ })
echo "${names[@]}"
Run Code Online (Sandbox Code Playgroud)

但问题是${names[$i],如果我运行此循环,我无法通过索引(即等)访问它们-

for (( i=0; i<${#names[@]}; i++ ))
do
     echo "$i: ${names[$i]"
     # do some processing with ${names[$i]}
done
Run Code Online (Sandbox Code Playgroud)

我得到这个输出 -

>_
 0: (Netgear)
 1: (Hon
 2: Hai
Run Code Online (Sandbox Code Playgroud)

但我想要的是 -

>_
 0: (Netgear)
 1: (Hon Hai Precision Ind. Co.)
 2: (Apple)
Run Code Online (Sandbox Code Playgroud)

我无法找到一个好方法,请注意第二个字符串中有空格.

任何的想法 ?

arrays bash newline

17
推荐指数
5
解决办法
2万
查看次数

Shell 脚本在给定文件夹时打印出文件名

我正在编写一个 shell 脚本.. 给定一个文件夹作为命令行参数,它将打印出其中的文件/文件夹的名称

#!/bin/sh
folder="$1"
for f in "$folder"
do
  echo "$f"
done
Run Code Online (Sandbox Code Playgroud)

这只会打印出给定文件夹的第一个文件/文件夹。

bash shell scripting

3
推荐指数
1
解决办法
8054
查看次数

Shell脚本列出给定目录中的文件以及它们是文件还是目录

目前正在学习一些 bash 脚本并遇到一个问题,该问题涉及列出给定目录中的所有文件并说明它们是文件还是目录。我遇到的问题是我只能获取当前目录,或者如果指定一个目录,它只会说它是一个目录,例如。/home/user/shell_scripts 将返回 shell_scipts 是一个目录,而不是其中包含的文件。这是我到目前为止:

dir=$dir
for file in $dir; do
    if [[ -d $file ]]; then
        echo "$file is a directory"
    if [[ -f $file ]]; then
        echo "$file is a regular file"
    fi
done
Run Code Online (Sandbox Code Playgroud)

bash shell

2
推荐指数
1
解决办法
3万
查看次数

标签 统计

bash ×6

shell ×5

find ×2

linux ×2

arrays ×1

directory ×1

file-listing ×1

newline ×1

quotes ×1

scripting ×1

unix ×1