我想使用以下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 变量。
我正在使用命令
ls -a | grep '^\.'
仅显示隐藏文件。我添加了该行
alias hidden='ls -a | grep '^\.'' # show only hidden files
到.bash_aliases文件
但这不起作用。应该是'人品问题。
你能帮我写正确的别名吗?
我正在尝试编写一个脚本,该脚本将在具有许多单级子目录的给定目录中运行。该脚本将 cd 进入每个子目录,对目录中的文件执行命令,然后 cd out 继续到下一个目录。做这个的最好方式是什么?
我认为这很简单 - 但事实证明它比我预期的要复杂。
我想遍历目录中特定类型的所有文件,所以我这样写:
#!/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)
如何编写一个干净地处理没有匹配文件的循环?
我想删除我的主文件中的一些包,但文件名太长 ( google-chrome-stable_current_i386.deb)。因此,我决定使用该命令ls|grep chrome|rm将文件通过管道传递给 grep 以过滤掉 chrome 文件,然后将其删除。它不起作用,所以我想看看我如何做到这一点。
我正在尝试将管道的输出转换为变量。我尝试了以下几件事:
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) 我在一个有很多.txt文件的文件夹中,我想找到所有包含stringA但不包含的文件stringB(它们不一定在同一行)。有谁知道如何做到这一点?
我想将特定文件夹中的所有 *.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)
如何达到我的目标?
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在这种情况下如何使用吗?
目的:我有一个文本文件,其中列出了没有扩展名的所有名称。我想制作一个脚本,将文本文件与文件夹进行比较,以查看缺少哪个文件。
在命令行中,显示多个文件内容的最简单方法是什么?我的目录如下所示。
./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 的组合来实现,但我还没有弄清楚如何。谢谢你的时间!