我正在运行 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)
但这似乎不起作用。在互联网上搜索似乎并没有带来多少乐趣。任何想法最受欢迎。
我正在尝试按照 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 上运行代码