[英]Linux Command Line - list all directories containing .js files, and copy the directories and their contents to a new folder
这是我已经拥有的代码,用于查找并列出所有包含 .js 文件的目录(不包括 node_modules 目录)。
find . -name '*.js*' -printf "%h\n" | sort -u | grep -v node_modules
如您所见,列出这些目录是没有问题的。 但是,我不想列出目录,而是将它们(及其内容)复制到一个新文件夹中,最好在一行中复制而不运行任何类型的脚本。
任何帮助将非常感激!
最安全的方法是使用 NULL 作为分隔符来处理目录列表,以便正确处理带有空格(和其他奇数字符)的目录。
如果 output 看起来正确,请移除echo
。
find "/path/to/tld" -path "*node_modules*" -prune -o -name "*.js" -printf "%h\0" | \
sort -uz | xargs -0 -I _ echo cp -a _ "/path/to/new/dir"
这需要 Bash 4 用于关联数组,它将过滤掉重复项。
#!/bin/bash
tld="/path/to/top/level/dir"
newdir="/path/to/new/dir"
unset dirHash;
declare -A dirHash
while read -r -d $'\0' dir; do
(( ! dirHash["$dir"]++ )) && echo cp -a "$dir" "$newdir"
done < <(find "$tld" -path "*node_modules*" -prune -o -name "*.js" -printf "%h\0")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.