linux - 如果找不到文件,则将 linux `find` 和 `cp` 与输出结合起来
问题描述
你好堆栈溢出 -
我想使用输入文本文件(每个文件查找一行)来做两件事:将找到的文件复制到不同的目录并提供是否找不到文件的消息。该消息不必专门说明未找到文件;它还可以包括找到的文件的位置,如下面显示的输出。我无法组合下面的两个命令。这可能吗?我确信有替代解决方案,并对这些解决方案持开放态度
#如果找不到文件或找到文件的位置,将告诉您: 命令:
for i in $(cat toGet.txt); do find . -name "$i" | grep . || echo "$i - file not found" ; done
输出:
- file1_L001_R*_001.fastq.gz - 找不到文件
- ./file2_S13_L001_R2_001.fastq.gz
- ./file2_S13_L001_R1_001.fastq.gz
- file3_L001_R*_001.fastq.gz - 找不到文件
#将找到的文件复制到新目录
for i in $(cat toGet.txt); do find . -name "$i" -exec cp {} /path/to/directory \; ; done
有什么建议么
解决方案
编写一个脚本,接收要复制到其标准输入的文件名。如果输入为空,则报告未找到该文件,否则将其复制。find
然后将输出通过管道传输给它。
复制到.sh:
#!/bin/sh
looking_for=$1
dest_dir=$2
found=$(cat)
if [ -z "$found" ]
then echo "$looking_for - file not found"
else cp "$found" "$dest_dir"
while read -r i; do
find . -name "$i" | ./copy_to.sh "$i" /path/to/directory
done < toGet.txt
推荐阅读
- window - 配置不同类型的参数 GPO
- visio - 如何从 Visio 自定义形状的子形状中引用形状的数据
- c++ - 如何从使用 GMock 模拟的模拟类中触发 Qt Signal
- authentication - 在 OnePlus 8T OxygenOS 11 应用程序无法正常工作
- image - 在 Tkinter 中的 vlc 上绘制透明图像
- javascript - wait for response from api for 5 sec if response taking time put in console log
- python - 如何使用python提取文本文件中的特定段落?
- javascript - 我想使用过滤器提取包含相应值的索引
- python - python中的正则表达式
- python - 将文件路径调整为与 VS Code 设置“python.terminal.activateEnvironment”相关的 UNIX 或 Windows 样式