这个问题的灵感来自
我看到这些结构
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
什么?
我将 /home 目录更改为不同的分区,但无法从中访问文件,我已经能够从这个问题中解决一些问题 -在切换到不同的分区后如何访问先前安装的内容?.
如果我之前已经注意到目录的 inode,我是否可以单独使用它来重命名目录?
我正在编写一个用于在给定目录中显示文件的小部件,我想知道是否需要涵盖文件名称为空的情况。
测试显示结果不明显,所以我想知道是否有人有确切的信息
$ touch ""
touch: cannot touch `': No such file or directory
$ echo > ""
bash: : No such file or directory
Run Code Online (Sandbox Code Playgroud) 我在 Debian stable、Cinnamon DE 下运行,我有一些文件想用命令行删除(现在我用 Nemo 删除这些文件)。
例如,这些.txt
文件以“?”开头。在 shell 和 Nemo 中,这个 '?' 被回车代替:
$@debian: ls
ssolveIncpUL46pK ?ssolveIncpUL46pK.txt
Run Code Online (Sandbox Code Playgroud)
我试过:
rm ?ss*
rm \?ss*
rm \ ss*
Run Code Online (Sandbox Code Playgroud) 我遇到过一个意外创建的文件,并且文件名非常糟糕。的输出ls -lq
:
ls -lq
total 2
-rw-r--r--. 1 mbyx7ag2 zk01 0 May 1 2014 ???E@X?p@8?@
Run Code Online (Sandbox Code Playgroud)
我曾无数次尝试杀死这个东西,但到目前为止都无济于事。每当我收到错误,因为该文件不存在,尽管ls
在那里显示它并且能够使用stat
它:
stat ^A?E\@X?p\@8^H\@
File: `\001\360\265E@X\342p@8\b@'
Size: 0 Blocks: 3 IO Block: 32768 regular empty file
Device: 1ah/26d Inode: 5239755888 Links: 1
Access: (0644/-rw-r--r--) Uid: (231058/mbyx7ag2) Gid: (10027/ zk01)
Access: 2014-05-01 15:47:28.638919596 +0100
Modify: 2014-05-01 15:47:28.638919596 +0100
Change: 2014-05-01 15:47:28.638919596 +0100
Run Code Online (Sandbox Code Playgroud)
有趣的是,那里的 stat 命令是制表符补全的结果,看起来与其他地方使用的名称完全不同。
我尝试过这些问题中的想法:
我还尝试了从文件名中删除非打印字符 - 北极地区超级计算中心(在“删除非打印字符”下)的两种方法。
令人担忧的是,使用 inode 的所谓“万无一失”的技巧如下:
ls -i
5239755888 ???E@X?p@8?@
find . …
Run Code Online (Sandbox Code Playgroud)