Questions tagged «filenames»

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

3
如何在单个目录中查找子目录中的文件并按文件名对它们进行排序?
使用进行正常查找的结果find . ! -path "./build*" -name "*.txt": ./tool/001-sub.txt ./tool/000-main.txt ./zo/001-int.txt ./zo/id/002-and.txt ./as/002-mod.txt 以及何时排序sort -n: ./as/002-mod.txt ./tool/000-main.txt ./tool/001-sub.txt ./zo/001-int.txt ./zo/id/002-and.txt 但是所需的输出是: ./tool/000-main.txt ./zo/001-int.txt ./tool/001-sub.txt ./zo/id/002-and.txt ./as/002-mod.txt 这意味着输出仅基于文件名排序,但是文件夹信息应作为输出的一部分进行维护。 编辑:使示例更加复杂,因为子目录结构可能包含多个层次。
9 find  filenames  sort 

6
仅查找那些包含与该文件夹同名的文件的文件夹
我想找到所有包含具有相同名称(和扩展名.md)的markdown文件的子文件夹。 例如:我要查找以下子文件夹: Apple/Banana/Orange #Apple/Banana/Orange/Orange.md exists Apple/Banana #Apple/Banana/Banana.md exists Apple/Banana/Papaya #Apple/Banana/Papaya/Papaya.md exists 注意:目录中可以有其他文件或子目录。 有什么建议么? 可以使用以下代码测试问题的解决方案: #!/usr/bin/env bash # - goal: "Test" # - author: Nikhil Agarwal # - date: Wednesday, August 07, 2019 # - status: P T' (P: Prototyping, T: Tested) # - usage: ./Test.sh # - include: # 1. …

8
按文件的基本名称对文件的路径名数组进行排序
假设我有存储在数组中的文件的路径名列表 filearray=("dir1/0010.pdf" "dir2/0003.pdf" "dir3/0040.pdf" ) 我想根据文件名的基本名称以数字顺序对数组中的元素进行排序 sortedfilearray=("dir2/0003.pdf" "dir1/0010.pdf" "dir3/0040.pdf") 我怎样才能做到这一点? 我只能对它们的基本名称部分进行排序: basenames=() for file in "${filearray[@]}" do filename=${file##*/} basenames+=(${filename%.*}) done sortedbasenamearr=($(printf '%s\n' "${basenames[@]}" | sort -n)) 我在想 创建一个关联数组,其键是基名,值是路径名,因此对路径名的访问总是通过基名完成的。 仅为基名创建另一个数组,然后将其应用于基sort名数组。 谢谢。
8 bash  filenames  sort  array 

6
空字符串何时表示当前目录?
在脚本中,我用于find收集当前目录中的一些文件,如下所示: $ find . -name "*.h" ./foo.h 现在,我希望它只是输出foo.h,不带./前缀。我认为空字符串""表示Shell命令中的当前目录。但这给出了: $ find "" -name "*.h" find: ftsopen: No such file or directory 所以我错了。现在我的问题是何时/如何/在哪里/ ..“空字符串(?)”表示需要文件名或路径名的命令中的当前目录吗?有一个整洁而有启发性的解释吗? 附带的一个问题是,上面的查找是否可以简单地解决,而无需字符串操作la ${parameter#word}或cutor sed?
8 find  filenames 


4
名称为空的文件
我正在编写一个用于在给定目录中显示文件的小部件,我想知道是否需要解决文件名称为空的情况。 测试未显示明显的结果,所以我想知道某人是否具有确定的信息 $ touch "" touch: cannot touch `': No such file or directory $ echo > "" bash: : No such file or directory
8 filenames 

5
用文件名中的下划线替换点,保留扩展名不变
我有一个bash脚本,我试图替换文件名中的点,并用下划线替换它们,使扩展名保持不变(我在Centos 6 btw上)。从下面的输出中可以看到,该脚本在有一个点要替换的情况下起作用,但是在唯一的点是扩展名的情况下,该脚本仍会尝试重命名该文件,而不是忽略它。谁能指出我应该如何更好地处理这个问题?谢谢你的帮助。 我的(错误的)脚本: #!/bin/bash for THISFILE in * do filename=${THISFILE%\.*} extension=${THISFILE##*\.} newname=${filename//./_} echo "mv $THISFILE ${newname}.${extension}" #mv $THISFILE ${newname}.${extension} done 输入样例: 1.3MN-Pin-Eurotunnel-Stw505.51.024-EGS-130x130.jpg Wear-Plates.jpg 输出: mv 1_3MN-Pin-Eurotunnel-Stw505_51_024-EGS1-130x130.jpg 1_3MN-Pin-Eurotunnel-Stw505_51_024-EGS1-130x130.jpg mv Wear-Plates_jpg.Wear-Plates_jpg Wear-Plates_jpg.Wear-Plates_jpg

2
指向目录的符号链接上的斜杠
我正在尝试在类似Unix的系统中模拟路径解析的过程(请参见手册页path_resolution)。 我的操作系统是带有GNU coreutils 8.7的Linux。 为了阐明在解析度中额外尾随“ /”的含义,我在shell中做了以下操作: mkdir this_is_dir ln -s this_is_dir this_is_link rm this_is_link 一切都很好,因为this_is_link是一个符号链接,而我只是将其删除了。但是在尝试时: mkdir this_is_dir ln -s this_is_dir this_is_link rm this_is_link/ 呼应 rm: cannot remove 'this_is_link/': Is a directory 好吧,我认为是跟在符号链接后面的“ /”引起的。因此,我尝试了另一个命令:rmdir this_is_link/ 有趣的结果出来了: rmdir: failed to remove 'this_is_link/': Not a directory 不是我所期望的。因此,我请朋友确认是否可以在他的系统上获得相同的结果。他的coreutils版本比我低。而结果是惊人的,无论rm或者rmdir 'this_is_link/',相同的错误Not a directory发生。 另一个朋友刚刚在他的Mac OS上进行了尝试,结果是:rm=>'是目录',rmdir=>目录已成功删除,链接仍然存在。 是否有关于路径解析的确切行为的规范?



2
如何从Shell变量获取路径的文件名部分
Shell变量包含路径。一个人如何获得其文件名部分? 在bash(1)中,我进行了实验,发现可以使用."${i/*\///}"where i是环境变量的名称来进行操作。这种方法不仅丑陋,而且在路径不包含任何/字符的情况下也是错误的。 我将演示一个需要这种功能的实际案例。假设我们要为源目录中的每个PDF文件建立到当前目录的符号链接。 $ for i in /source/path/*.pdf; do\ ln -s "$i" ."${i/*\///}"; \ done
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.