标签: filenames

为什么循环查找的输出是不好的做法?

这个问题的灵感来自

为什么使用 shell 循环处理文本被认为是不好的做法?

我看到这些结构

for file in `find . -type f -name ...`; do smth with ${file}; done
Run Code Online (Sandbox Code Playgroud)

for dir in $(find . -type d -name ...); do smth with ${dir}; done
Run Code Online (Sandbox Code Playgroud)

几乎每天都在这里使用,即使有些人花时间对这些帖子发表评论,解释为什么应该避免这种东西......
看到此类帖子的数量(以及有时这些评论被简单地忽略的事实)我想我还不如问一个问题:

为什么循环find的输出是不好的做法,为 返回的每个文件名/路径运行一个或多个命令的正确方法是find什么?

find filenames files for

193
推荐指数
4
解决办法
3万
查看次数

循环遍历名称中带有空格的文件?

我编写了以下脚本来比较两个目录的输出,其中包含所有相同的文件:

#!/bin/bash

for file in `find . -name "*.csv"`  
do
     echo "file = $file";
     diff $file /some/other/path/$file;
     read char;
done
Run Code Online (Sandbox Code Playgroud)

我知道还有其他方法可以实现这一目标。奇怪的是,当文件中有空格时,这个脚本会失败。我该如何处理?

find 的示例输出:

./zQuery - abc - Do Not Prompt for Date.csv
Run Code Online (Sandbox Code Playgroud)

scripting bash find text-processing filenames

187
推荐指数
6
解决办法
25万
查看次数

列出按数字排序的文件

我有一堆从log1log164.

我正在尝试在 UNIX 终端中列出目录(已排序),但排序功能仅提供如下格式:

home:logs Home$ ls -1 | sort
log1.gz
log10.gz
log100.gz
log101.gz
log102.gz
log103.gz
log104.gz
log105.gz
log106.gz
...etc
Run Code Online (Sandbox Code Playgroud)

我想要的是

home:logs Home$ ls -1 | sort
log1.gz
log2.gz
log3.gz
log4.gz
log5.gz
log6.gz
log7.gz
...{more here}
log99.gz
log100.gz
log101.gz
log102.gz
...etc
Run Code Online (Sandbox Code Playgroud)

我可以用来做什么的任何建议?

ls filenames sort numbering

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

Linux 如何处理多个连续的路径分隔符(/home////username//file)?

我正在处理将文件位置传递给 scp 子进程的 python 脚本。这一切都很好,但我处于这样一种情况,我可能最终将一个路径与一个文件名连接起来,这样路径中就有一个双 ' /。我知道 bash 不关心您是否有多个文件分隔符,但我想知道如何纠正它。是 bash 去掉了额外的/s 还是真的无关紧要?

我问是因为它会为我节省几行代码来/在连接时检查额外的s。我知道这没什么大不了的,但我也很好奇。我有一个包含行cd //usr(而不是cd /usr)的 bash 脚本,这似乎暗示/在路径中使用多个s可能很重要

directory slash filenames

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

//foo/bar 与 /foo/bar 在哪些系统上不同?

在整个 POSIX 规范中,都有规定 ( 1 , 2 , 3 ...) 允许实现/特别处理以 2 开头的路径。

POSIX 应用程序(根据 POSIX 规范编写的应用程序可移植到所有 POSIX 兼容系统)不能假设//foo/bar与 相同/foo/bar(尽管他们可以假设///foo/bar与 相同/foo/bar)。

现在那些//foo特殊对待的 POSIX 系统(历史悠久且仍在维护)是什么?我相信(我现在被证明是错误的)微软为他们的 Unix 变体 (XENIX) 和可能的 Windows POSIX 层推送了 POSIX 条款(有人能证实吗?)。

它被 Cygwin 使用,Cygwin 也是 Microsoft Windows 的类似 POSIX 的层。是否有任何非 Microsoft Windows 系统?开放虚拟机?

//foo/bar特殊的系统上,它用于什么?//host/path用于网络文件系统访问?虚拟文件系统?

某些运行在类 Unix 系统上的应用程序(如果不是系统的 API)是否会//foo/bar特别处理路径(在它们否则将其/foo/bar视为文件系统上的路径的上下文中)?


编辑,此后我在奥斯汀组邮件列表上询问了//foo/bar有关规范中处理起源的问题,并且讨论很有趣(至少从考古学的角度来看)。

slash filenames history portability

118
推荐指数
6
解决办法
1万
查看次数

命令末尾的破折号“-”是什么意思?

给出以下命令:

gzip -dc /cdrom/cdrom0/file.tar.gz | tar xvf –
Run Code Online (Sandbox Code Playgroud)

什么是-在命令中到底意味着什么?它是某种占位符吗?

shell filenames

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

目录中文件类型的递归统计?

我为转换项目做了一个网站抓取。我想对那里的文件类型进行一些统计——例如,400 个.html文件、100 个.gif等。有什么简单的方法可以做到这一点?它必须是递归的。

编辑:使用 maxschelpzig 发布的脚本,由于我抓取的网站架构,我遇到了一些问题。一些文件的名称*.php?blah=blah&foo=bar带有各种参数,因此它认为它们都是唯一的。所以解决方案需要考虑*.php*到所有的类型都是相同的,可以这么说。

shell filenames

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

将相对路径转换为没有符号链接的绝对路径

是否有 Unix 命令从可能包含符号链接的相对路径中获取绝对(和规范化)路径?

shell directory symlink filenames

76
推荐指数
3
解决办法
8万
查看次数

特定文件属于哪个 Fedora 包?

在 Debian 系列操作系统中,dpkg --search /bin/ls给出:

coreutils: /bin/ls
Run Code Online (Sandbox Code Playgroud)

也就是说,该文件/bin/ls属于名为coreutils的 Debian 软件包。(如果您对包含未安装文件的包感兴趣,请参阅此帖子

Fedora 的等价物是什么?

fedora packaging filenames

72
推荐指数
1
解决办法
9万
查看次数

Unix 文件命名约定

我想知道 Unix 中文件的命名约定是什么?我不确定这一点,但我认为可能有一个应该遵循的通用命名约定?

例如,我想命名一个文件说:backupwith part 2andrandom

我应该这样做吗:

backup_part2_random

或者

backup-part2-random

或者

backup.part2.random

我希望这个问题很清楚。基本上,我想选择一种符合 Unix 哲学的格式。

filenames

71
推荐指数
7
解决办法
7万
查看次数