相关疑难解决方法(0)

如何使用find重命名多个文件

我想使用以下find命令重命名多个文件(file1 ... fileN 到 file1_renamed ... fileN_renamed):

find . -type f -name 'file*' -exec mv filename='{}' $(basename $filename)_renamed ';'
Run Code Online (Sandbox Code Playgroud)

但收到此错误:

mv: cannot stat ‘filename=./file1’: No such file or directory
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为文件名不被解释为 shell 变量。

shell find

61
推荐指数
6
解决办法
11万
查看次数

ls 别名中只显示隐藏文件(点文件)

我正在使用命令

ls -a | grep '^\.'

仅显示隐藏文件。我添加了该行

alias hidden='ls -a | grep '^\.'' # show only hidden files

.bash_aliases文件

但这不起作用。应该是'人品问题。

你能帮我写正确的别名吗?

ls alias wildcards

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

cd 进入所有目录,对该目录下的文件执行命令,并返回上一个当前目录

我正在尝试编写一个脚本,该脚本将在具有许多单级子目录的给定目录中运行。该脚本将 cd 进入每个子目录,对目录中的文件执行命令,然后 cd out 继续到下一个目录。做这个的最好方式是什么?

shell-script

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

bash 迭代文件列表,除非为空

我认为这很简单 - 但事实证明它比我预期的要复杂。

我想遍历目录中特定类型的所有文件,所以我这样写:

#!/bin/bash

for fname in *.zip ; do
   echo current file is ${fname}
done
Run Code Online (Sandbox Code Playgroud)

只要目录中至少有一个匹配的文件,这就会起作用。但是,如果没有匹配的文件,我会得到:

current file is *.zip
Run Code Online (Sandbox Code Playgroud)

然后我尝试:

#!/bin/bash

FILES=`ls *.zip`
for fname in "${FILES}" ; do
    echo current file is ${fname}
done
Run Code Online (Sandbox Code Playgroud)

当没有文件时循环体不执行,我从 ls 收到错误:

ls: *.zip: No such file or directory
Run Code Online (Sandbox Code Playgroud)

如何编写一个干净地处理没有匹配文件的循环?

bash parameter

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

如何通过管道 ls 到 grep,并删除由 grep 过滤的文件?

我想删除我的主文件中的一些包,但文件名太长 ( google-chrome-stable_current_i386.deb)。因此,我决定使用该命令ls|grep chrome|rm将文件通过管道传递给 grep 以过滤掉 chrome 文件,然后将其删除。它不起作用,所以我想看看我如何做到这一点。

ls grep pipe rm

48
推荐指数
5
解决办法
12万
查看次数

Bash:将管道的输出分配给变量

我正在尝试将管道的输出转换为变量。我尝试了以下几件事:

echo foo | myvar=$(</dev/stdin)
echo foo | myvar=$(cat)
echo foo | myvar=$(tee)
Run Code Online (Sandbox Code Playgroud)

但是$myvar是空的。

我不想做:

myvar=$(echo foo)
Run Code Online (Sandbox Code Playgroud)

因为我不想生成子shell。

有任何想法吗?

编辑:我不想生成子shell,因为管道之前的命令需要编辑全局变量,而这在子shell中是做不到的。它可以?的echo东西只是为了简化。它更像是:

complex_function | myvar=$(</dev/stdin)
Run Code Online (Sandbox Code Playgroud)

我不明白,为什么这不起作用。这例如:

complex_function | echo $(</dev/stdin)
Run Code Online (Sandbox Code Playgroud)

bash pipe stdin

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

查找包含一个字符串但不包含另一个字符串的文件

我在一个有很多.txt文件的文件夹中,我想找到所有包含stringA但不包含的文件stringB(它们不一定在同一行)。有谁知道如何做到这一点?

grep find files

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

使用 FFmpeg 将所有 *flac 转换为 *.mp3 的 Bash 脚本?

我想将特定文件夹中的所有 *.flac 转换为 *.mp3。

这是我尝试过的,但不起作用:

# change to the home directory
cd ~/music
# convert all *.flac files
ffmpeg -i *.flac -acodec libmp3lame *.mp3
# (optional: check whether there are any errors printed on the terminal)
sleep 60
Run Code Online (Sandbox Code Playgroud)

如何达到我的目标?

bash ffmpeg shell-script

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

'ls -1' :如何列出没有扩展名的文件名

ls -1 像这样列出我的元素:

foo.png
bar.png
foobar.png
...
Run Code Online (Sandbox Code Playgroud)

我希望它没有.png像这样列出:

foo
bar
foobar
...
Run Code Online (Sandbox Code Playgroud)

(目录只包含.png文件)

有人可以告诉我grep在这种情况下如何使用吗?

目的:我有一个文本文件,其中列出了没有扩展名的所有名称。我想制作一个脚本,将文本文件与文件夹进行比较,以查看缺少哪个文件。

ls shell grep

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

显示多个文件的内容

在命令行中,显示多个文件内容的最简单方法是什么?我的目录如下所示。

./WtCgikkCFHmmuXQXp0FkZjVrnJSU64Jb9WSyZ52b
./xdIwVHnHY7dnuM9zcPDYQGZFdoVORPyMVD2IzjgM
./GZnATXO1e5Hh3Bz1bhgJjjwheIjjZqtnXR0hfOyj
./mWz7ehBNoTZmtDh8JG6sxw2lMJFwIovPzxDGECUY
./JN65F5v3RL2ilHPqNSx9N9D4lvVpqpbJ9lASd8TJ
./At9PS4y4nTiXUO0Z0USnbYkTPBla1msQRpwuruqE
./YiPyMZPCaUDZTiTczAvWII9bJrUqLXCFtH2pXEA2
./JoakdlbRFPwAvWp1d4n8RvMoyMeizCoiriL2Sn2U
./wFPWZUus8Yu7UtESGABLCoqDg36cT90USO0xuyUr
./qseI9PgV1EJfZCDyGGeVytajqG7JeX0r7eA5S1JW
./zgFJpNgXyCsaVh38aCuMGuzHwIbwSNB6rQDdh27x
./.htaccess
Run Code Online (Sandbox Code Playgroud)

现在我想查看除.htaccess. 它可能看起来像:

WtCgikkCFHmmuXQXp0FkZjVrnJSU64Jb9WSyZ52b:
Contents of file WtCgikkCFHmmuXQXp0FkZjVrnJSU64Jb9WSyZ52b.

xdIwVHnHY7dnuM9zcPDYQGZFdoVORPyMVD2IzjgM:
Contents of file xdIwVHnHY7dnuM9zcPDYQGZFdoVORPyMVD2IzjgM.

[...]
Run Code Online (Sandbox Code Playgroud)

我认为这应该可以通过 find、xargs 和 cat 的组合来实现,但我还没有弄清楚如何。谢谢你的时间!

command-line files

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

标签 统计

bash ×3

grep ×3

ls ×3

files ×2

find ×2

pipe ×2

shell ×2

shell-script ×2

alias ×1

command-line ×1

ffmpeg ×1

parameter ×1

rm ×1

stdin ×1

wildcards ×1