相关疑难解决方法(0)

如何通过 mv 命令移动所有文件和文件夹

如何通过 mv 命令将所有文件和文件夹从一个目录移动到另一个目录?

linux rename command

140
推荐指数
4
解决办法
65万
查看次数

如何对除当前目录和父目录之外的每个隐藏文件进行 glob

我想 glob 每个隐藏文件和目录,但不是当前 ( .) 和父目录 ( ..)。

我正在使用 bash。

观察当前行为:

$ ls -a
.  ..  ...a  ...aa  ..a  ..aa  .a  .aa  .aaa  a
$ echo *
a
$ echo .*
. .. ...a ...aa ..a ..aa .a .aa .aaa
Run Code Online (Sandbox Code Playgroud)

我想.*表现得像这样

$ echo .*
...a ...aa ..a ..aa .a .aa .aaa
Run Code Online (Sandbox Code Playgroud)

有外壳选项 dotglob

$ shopt -s dotglob
Run Code Online (Sandbox Code Playgroud)

这在某种程度上起作用;现在我可以使用*glob 的所有内容(隐藏或不隐藏)但不能...

$ echo *
...a ...aa ..a ..aa .a .aa .aaa a
Run Code Online (Sandbox Code Playgroud)

但现在我无法区分隐藏与否。此外, …

command-line shell bash

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

使用 rsync 移动文件和删除目录?

最近我需要删除大量文件(超过 100 万个),我读到这样做:

rsync -av --delete `mktemp -d`/ ~/source && rmdir ~/source
Run Code Online (Sandbox Code Playgroud)

是最优化的方法之一,我可以保证它比rm -rf.

我不是这方面的专家,但根据我的理解,rsync 性能的原因与它列出文件的方式有关(我想是 LIFO 而不是 FIFO)。现在,问题是,我还需要以有效的方式移动大量文件。经过一番搜索,我发现了这个:

rsync -av --ignore-existing --remove-source-files ~/source ~/destination
Run Code Online (Sandbox Code Playgroud)

虽然这会删除所有移动的文件~/source,该目录留在那里。由于我有一个类似“循环”的目录结构,数量files/directories非常接近 1,所以我不得不再次运行第一个命令以完全摆脱目录:

rsync -av --ignore-existing --remove-source-files ~/source ~/destination && \
rsync -av --delete `mktemp -d`/ ~/source && rmdir ~/source
Run Code Online (Sandbox Code Playgroud)

直线mv几乎会立即完成,但我的~/destination目录中有应该保留的文件,所以mv不是一个选项。我找到了--prune-empty-dirs--forcersync 选项,但似乎都没有像我期望的那样工作:

--force                 force deletion of directories even if not empty
--prune-empty-dirs      prune empty directory chains from the …
Run Code Online (Sandbox Code Playgroud)

bash rsync rm synchronization files

17
推荐指数
2
解决办法
5万
查看次数

遍历目录中内容的正确方法

我需要遍历目录中的每个文件。我看到的一种常见方法是使用以for file in *; do. 但是,我意识到它不包括隐藏文件(以“.”开头的文件)。另一个明显的方法是做类似的事情

for file in `ls -a`; do
Run Code Online (Sandbox Code Playgroud)

然而,迭代ls是一个坏主意,因为文件名中的空格会把一切搞砸。遍历目录并获取所有隐藏文件的正确方法是什么?

ls shell-script wildcards dot-files for

17
推荐指数
1
解决办法
8万
查看次数

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

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

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

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

ls shell directory wildcards files

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

如何根据大小列出所有目录?[不包括父目录]

我有一堆随机文件夹,其中一些是隐藏的(以句点开头)。我想列出所有这些,按它们的大小排序。

我有一些关于这一点的想法:

ls -d -1 -a */ | xargs du -s | sort
Run Code Online (Sandbox Code Playgroud)

ls ...它的一部分不显示隐藏文件。我知道之前曾就同一主题提出过一些问题,但答案从未包括包含隐藏文件的方法。或者,如果是,则使用长格式,从而使输出与命令的其余部分不兼容。

command-line ls shell find disk-usage

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

grep 忽略以点开头的文件

让我举个例子吧:

$ echo Hello > file1
$ echo Hello > file2
$ echo Hello > .file3
$ grep Hello * 2>/dev/null
file1:Hello
file2:Hello
Run Code Online (Sandbox Code Playgroud)

在这里您可以看到忽略的 grep.file3.

预期结果:

$ grep Hello * 2>/dev/null
.file3:Hello
file1:Hello
file2:Hello
Run Code Online (Sandbox Code Playgroud)

在 的情况下ls,有一个参数-a告诉不要忽略以开头的条目,.但我找不到任何功能grep

那么,无论如何要告诉grep不要忽略以 开头的条目.?或者为什么grep忽略它们?

grep dot-files

2
推荐指数
5
解决办法
4848
查看次数

将目录中的所有文件附加为 cli 参数

我需要运行一个看起来像这样的命令

mycli --file test.zip --file another_test.zip

如何使用目录中的所有 zip 文件动态运行它?我确定我可以从 find 命令通过管道传输文件,但我不知道如何将它们作为参数附加到另一个命令中,而且我的 bash-fu 不是很好

command-line bash arguments

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