相关疑难解决方法(0)

计算目录中文件数的最佳方法是什么?

如果解析 的输出ls很危险,因为它可能会中断一些时髦的字符(空格、\n、 ... ),那么了解目录中文件数量的最佳方法是什么?

我通常依靠find避免这种解析,但同样地,find mydir | wc -l由于相同的原因会中断。

我现在正在 Solaris 上工作,但我正在寻找一个在不同的 unice 和不同的 shell 中尽可能可移植的答案。

ls shell directory wildcards files

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

为什么 for 循环不会引发“参数太长”错误?

我发现这会引发“参数太长”错误:

ls *.*
Run Code Online (Sandbox Code Playgroud)

这不会提高它:

for file in *.*
do
    echo $file
done
Run Code Online (Sandbox Code Playgroud)

为什么?

shell

10
推荐指数
3
解决办法
1768
查看次数

Bash 脚本将文件排序到按字母顺序排列的文件夹中

我尝试通过脚本组织我的文件和文件夹。它使用我的文件的第一个字母创建文件夹并将其移动到那里。

第一次,脚本完成这项工作,但如果我创建新文件并再次执行脚本,它会在文件夹中创建一个新的子文件夹,依此类推。

例如,它创建T/T/toto.txt.

我的脚本:

for first in $(ls -1 | sed 's/^\(.\).*$/\1/' | tr '[a-z0-9]' '[A-Z0-9]' | uniq)
do
    mkdir tmp
    mv "$first"* tmp/
    lower=$(echo $first | tr '[A-Z]' '[a-z]')
    mv "$lower"* tmp/
    mv tmp/ "$first";
done
Run Code Online (Sandbox Code Playgroud)

scripting bash

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

在许多文件上使用 ls 会导致错误“bash:参数列表太长”

我正在尝试使用以下命令填充文件夹中 .fits 文件的所有名称:

ls *.fits > output_all.txt
Run Code Online (Sandbox Code Playgroud)

文件夹中 .fits 文件的数量 >330k,我收到错误消息

bash: /usr/bin/ls: Argument list too long
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

或者,也可以完全避免创建该文件output_all.txt。我只需要它告诉STILTS工具使用此命令将哪些 .fits 文件合并到大型 .fits 文件中

stilts tcat in=@output_all.txt out=table_stilts.fits icmd='keepcols "FLUX LOGLAM"'
Run Code Online (Sandbox Code Playgroud)

如果您知道一种方法告诉 STILTS 接受目录而不是文件作为输入,它将解决我的问题ls。总氮

ls bash

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

grep 使用一个文件路径,而不是另一个

我有两个目录,每个目录都有几千个文件,我试图从文件中 grep 某些 IP。我的 grep 字符串是:

grep "IP" cdr/173/07/cdr_2018_07*
Run Code Online (Sandbox Code Playgroud)

此 grep 字符串返回“grep:参数列表太长”。但是,当我执行以下操作时:

grep "IP" cdr/173/06/cdr_2018_06*
Run Code Online (Sandbox Code Playgroud)

它返回我正在寻找的东西。

下面是每个这些的父目录的 ls -l 。似乎差异大约是 400KB,所以我不确定大小是否真的是这里的问题。我错过了什么吗?

jeblin@debian:~$ ls -l cdr/173
total 18500
REDACTED
drwxr-xr-x 2 jeblin jeblin 2781184 Jul  2 09:34 06
drwxr-xr-x 2 jeblin jeblin 2826240 Aug  1 07:33 07
Run Code Online (Sandbox Code Playgroud)

如果它有所不同,我编写了一个 Python 脚本来自动执行此过程(搜索多个 IP),它适用于 06,但不适用于 07,这就是我尝试首先进行手动 grep 搜索的原因。

command-line grep debian

0
推荐指数
1
解决办法
87
查看次数

标签 统计

bash ×2

ls ×2

shell ×2

command-line ×1

debian ×1

directory ×1

files ×1

grep ×1

scripting ×1

wildcards ×1