Questions tagged «filenames»

文件名是用于在给定文件系统上唯一标识文件的名称。

8
按扩展名对目录中的文件进行计数
为了进行测试,我想计算一个目录中有多少个图像文件,并用文件扩展名(jpg =“ yes”来分隔每种图像文件类型。这是因为稍后它将对执行动作的另一个脚本很有用在每个文件扩展名上)。我可以仅对JPEG文件使用以下内容吗? jpg="" count=`ls -1 *.jpg 2>/dev/null | wc -l` if [ $count != 0 ] then echo jpg files found: $count ; jpg="yes" fi 考虑到文件扩展名jpg,png,bmp,raw和其他,我应该使用while循环来做到这一点吗?

3
为什么隐藏以点开头的文件名?我可以不使用点作为第一个字符来隐藏文件吗?
最初我以为这是一个巧合,但是现在我看到了甚至还有一个标签:所有隐藏的文件名都以点开头。这是惯例吗?为什么选择它?可以更改吗?或换句话说(如相关问题@evilsoup所暗示的,这暗示着其他答案):我可以隐藏文件而不重命名文件(.用作文件名的第一个字符)吗?

1
点点(..)到底是什么?为什么它的行为与符号链接不同?
我试图了解..(双点)的性质。似乎根据您访问它的方式指向不同的目标。 例:- /outer/ middle/ inner/ inner --> ./middle/inner/ 现在,/outer/middle/inner/..导致/outer/middle/,但如果我通过符号链接访问它,/outer/inner/..导致/outer/。似乎这里有两个不同..。 到底是..什么?符号链接?硬链接?还是在访问目录时根据路径动态生成?也许我对符号链接的理解是错误的。 编辑: 其他相关观察 /outer/ middle/ file inner/ f --> ./../file inner --> ./middle/inner/ 现在,如果我尝试通过/outer/inner/f它访问文件,则可以。但这不应该,因为/outer/inner/../file它没有指向文件。该文件位于中/outer/middle/inner/..。这似乎与上面的行为相矛盾!

2
GLOBIGNORE如何运作?
根据bash的手册页: GLOBIGNORE A colon-separated list of patterns defining the set of filenames to be ignored by pathname expansion. If a filename matched by a pathname expansion pattern also matches one of the patterns in GLOBIGNORE, it is removed from the list of matches. 但是在实践中... $ bash --noprofile --norc bash-4.2$ touch …

2
UTF 8文件名?
在基于UNIX的操作系统中,是否允许utf6文件名?如果是这样,我需要做一些特殊的事情来将文件写入磁盘。 让我解释一下我希望做什么。我正在编写一个应用程序,该应用程序将通过ftp将文件传输到远程系统,但文件名是通过某些可能位于utf8中的元数据集动态设置的。我想知道是否需要做一些操作以将文件写入Unix / Linux中的磁盘。 另外,作为后续行动,是否有人知道将ut​​f 8文件名上传到不支持utf8的系统会发生什么情况?

3
如何从bash的文件名扩展机制中排除某些文件?
我在根目录中有ubuntu文件系统目录,而我不小心将数百个文件复制到了根目录中。 我直觉地试图通过排除文件系统来删除复制的文件,例如 rm -rf !{bin,sbin,usr,opt,lib,var,etc,srv,libx32,lib64,run,boot,proc,sys,dev} ./. 但它不起作用。在删除整个目录时排除某些目录的正确方法是什么? 编辑:切勿在不知所措的情况下尝试此处的任何命令!

2
符合POSIX的方式使用可能包含空格的文件名列表
我看过Bash脚本指南,建议使用数组处理包含空格的文件名。但是DashAsBinSh建议数组不能移植,因此我正在寻找一种POSIX兼容方式来处理可能包含空格的文件名列表。 我正在尝试修改以下示例脚本,以便 echo foo/target/a.jar foo/target/b.jar bar/target/lol whitespace.jar 这是脚本 #!/usr/bin/env sh INPUT="foo/target/a.jar foo/target/b.jar bar/target/b.jar bar/target/lol whitespace.jar" # this would be produced by a 'ls' command # We can execute the ls within the script, if it helps dostuffwith() { echo $1; }; F_LOCATIONS=$INPUT ALL_FILES=$(for f in $F_LOCATIONS; do echo `basename $f`; …


3
是否可以将“ find -exec”嵌套在另一个“ find -exec”中?
我追求的是以下内容,但是无论我如何转义{}和+ ; find ./ -maxdepth 1 -type d -name '.*' -exec \ find {} -maxdepth 1 -type f -name '*.ini' -exec \ md5sum \{\} \\; \; 看到Unix-&-Linux问题之后,我发现以下代码可以工作,但它不是嵌套find,因此我怀疑有更好的方法来完成此特定工作。 find ./ -maxdepth 1 -type d -name '.*' \ -exec bash -c 'for x; do find "$x" -maxdepth 1 -type f -name "*.ini" …


2
shell命令中目录名称后的斜杠(/)
我在这里有一个小问题。 如果我有两个文件,说filea和fileb,mv filea fileb将 删除 fileb 重命名filea为fileb 那么,如果我有两个目录,说dira和dirb,mv dira dirb将 移动dira到dirb(会成为dirb/dira) 请注意,在两种情况下都没有通知或消息,那么这对我来说很不一致。我认为mv dira dirb应该只覆盖dirb其中的内容dira(或合并名为的目录下的两个目录dirb)。 我记得在某处读过,用斜杠(如dira/)表示的目录名称被视为目录,而没有斜杠(如dira)的名称则视为文件(当然在一定程度上)。无论如何,现在我想通过使用斜杠使shell(zsh以及可能的bash)尊重我的目录符号。有终端选项可以使我强制执行吗? 为了澄清,这是我想要的行为: mv dira dirb导致dirb被的内容覆盖dira mv dira dirb/导致dira被移入dirb(中dirb/dira) 有人和我有同样的想法吗?还是我很奇怪?

2
Shell文件名模式,可扩展为点文件,但不扩展为`..`?
最近,我因外壳模式以意外方式扩展而引起了一些意外。我想更改/root目录中一堆点文件的所有者,所以我做了 chown -R root .* 自然地,.*扩展到..那里确实是一场灾难。 我知道bash可以通过调整一些shell选项来更改此行为,但是在默认设置下,是否存在任何模式可以扩展到目录中的每个点文件,但不能扩展为.and ..?

1
不区分大小写的文件系统如何同时显示大小写文件名?
前几天,当我在开发项目时就想到了这个问题,该项目依赖于文件名方面的自以为是的框架。框架(此处不相关)想要查看大写优先的文件名。这让我开始思考。 上不区分大小写的文件系统,说extFAT或HFS +(具体不区分大小写)如何在文件系统提供访问相同的文件两者的文件名的上部和下部壳体的版本。 例如: $ cd ~/Documents $ pwd /home/derp/Documents $ cd ../documents $ pwd /home/derp/documents $ cd ../docuMents $ pwd /home/derp/docuMents $ cd ../DOCUMENTS $ pwd /home/derp/DOCUMENTS $ cd ../documentS $ pwd /home/derp/documentS 所有这些命令将解析到同一目录。这种行为(特别pwd是bash在这种情况下只是一个函数的输出)只是向我展示了它想看到的内容吗? 另一个例子: $ ls ~/Documents Derp.txt another.txt whatThe.WORLD 此处的文件系统报告由用户或程序创建的原始文件名的情况。 在文件系统堆栈中的什么时候保留了可读的文件名(例如,大写和小写),以便可以通过正确的大写和小写ASCII字符的任意组合来访问它?这只是某个地方的正则表达式把戏,还是还有其他事情发生? 编辑:经过更多研究后,似乎在保留大小写不区分大小写的文件系统中发现了我好奇的行为...

7
提取基本(减后缀)文件名的最后3个字符的最短方法
我正在尝试在sh脚本中将变量设置为文件基本名称的后3个字符(按基本名称,我的意思是没有路径和后缀)。我已经成功完成了此操作,但纯粹出于好奇,我想知道是否可以使用更短的单个命令。最初,我与曾有过一次往来awk,但时间很长。目前,我有以下两行脚本(假设完整的文件名位于中$1): filebase=`basename "$1"` lastpart=`echo -n ${filebase%.*} | tail -c3` 因此,例如,“/path/to/somefile.txt”结束了“ILE”在$lastpart。 我可以以某种方式结合起来,basename然后将后缀剥离为一个命令,是否有一种tail无需使用管道即可将其发送到(或其他可以使用的东西)的方法?后缀是未知的,因此我不能将其作为的参数basename。 实际上,主要目标并不是要尽可能地简短,而要使其一目了然。所有这些的实际上下文是有关Superuser的问题,我试图在其中提出一个相当简单的答案。

5
将wget或curl的输出写入基于URL的自定义文件名
例如,我有一个链接http://www.abc.com/123/def/ghi/jkl.mno。我想使用wget或下载它,curl并获取输出文件的名称为def_ghi_jkl.mno,其中该部分def_ghi来自链接。 我将把此wget命令放在脚本中以下载多个文件,这样它就不能显式给出输出文件名。
12 filenames  wget  curl 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.