小编Joh*_*hnB的帖子

使用 basename 解析文件中保存的路径列表

我正在运行 Mac OSX 并尝试使用命令行来查找我拥有的同名文件的数量。

我尝试使用以下命令:

find ~ -type f -name "*" -print | basename | sort | uniq -d > duplicate_files
Run Code Online (Sandbox Code Playgroud)

它不起作用!当我执行以下操作时:

find ~ -type f -name "*" -print > duplicate_files
Run Code Online (Sandbox Code Playgroud)

然后duplicate_files 确实包含我所有文件的路径。所以我认为问题在于basename- 它不接受标准输入。然后我尝试了以下方法:

basename $(find ~ -type f -name "*" -print) > duplicate_files
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用。在互联网上搜索似乎并没有带来多少乐趣。任何想法最受欢迎。

osx duplicate find filenames basename

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

模式匹配

我正在尝试按照 Bash Cookbook 来了解 Bash Scripting。我正在使用正则表达式进行示例 6.8 测试。

我有以下脚本:

#!/usr/bin/env bash
# cookbook filename: trackmatch

for CDTRACK in *
do
     if [[ "$CDTRACK" =~ "([[:alpha:][:blank:]]*)- ([[:digit:]]*) - (.*)$" ]]
then
    echo ${BASH_REMATCH[2]}
else
    echo Error $CDTRACK
fi
done
Run Code Online (Sandbox Code Playgroud)

我将此应用于我目录中的几个文件:

Ludwig van Beethovern - 02 - Adagio un poco mosso.ogg

路德维希·范·贝多芬 - 01 - Allegro.ogg

我总是得到一个错误返回。问题似乎与([[:alpha:][:blank:]]*)- ([[:digit:]]*) -代码部分有关。当我确实有 if 语句时:if [[ "$CDTRACK" =~ "(.*)$" ]]那么就没有错误。

关于我做错了什么的任何想法?

我在 AWS,Bash v 4.2 上运行代码

bash shell-script regular-expression patterns

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