使用名称对文件进行分组,然后使用awk将其移动到相应目录

维品

我试图根据名称(在_之前的前几个字母)对文件进行分组,并使用awk将其移动到单独的目录(如果不存在则创建新目录)。

可以使用以下命令创建测试数据:

echo "1" > 123_20190911_110011.txt
echo "2" > 123_20190911_110012.txt
echo "0" > 123_20190910_110010.txt
echo "1" > 1234_20190911_110011.txt
echo "2" > 1234_20190911_110012.txt
echo "0" > 1234_20190910_110010.txt

ls -ltr的输出是:

-rw-r--r-- 1 vipin vipin 2 Sep 11 23:17 123_20190911_110011.txt
-rw-r--r-- 1 vipin vipin 2 Sep 11 23:17 123_20190911_110012.txt
-rw-r--r-- 1 vipin vipin 2 Sep 11 23:17 123_20190910_110010.txt
-rw-r--r-- 1 vipin vipin 2 Sep 11 23:17 1234_20190911_110011.txt
-rw-r--r-- 1 vipin vipin 2 Sep 11 23:17 1234_20190911_110012.txt
-rw-r--r-- 1 vipin vipin 2 Sep 11 23:17 1234_20190910_110010.txt

在这种情况下,我期望2个目录123和1234和文件移入以下目录:

Dir 123 has files
 123_20190911_110011.txt
 123_20190911_110012.txt
 123_20190910_110010.txt
Dir 1234 has files
 1234_20190911_110011.txt
 1234_20190911_110012.txt
 1234_20190910_110010.txt

下面的代码不起作用。甚至没有创建目录,也没有显示任何错误。

for i in `ls -p | grep -v /` ## to list only files
do 
echo $i | awk -F'_' '{mkdir -p $1; cp $i $1}'
done

可以使用以下命令创建目录,但是如何在其中添加move命令?

for i in `ls -p | grep -v / `; do echo $i | awk -F'_' '{print $1; dir= $1}' | xargs mkdir -p ; done
萨斯瓦·帕迪

你不应该在里面mvcp里面awk以下作品:

for i in * ; do
  [ -f "$i" ] || continue
  dir_name="$(echo $i | awk -F'_' '{print $1}')"
  mkdir -p -- "$dir_name"
  cp -- "$i" "$dir_name"
done

但是,awk可以使用%bash中运算符代替以删除第一个下划线后的所有内容,以获取目录名称。

for i in * ; do
  [ -f "$i" ] || continue
  dir_name="${i%%_*}"
  mkdir -p -- "$dir_name"
  cp -- "$i" "$dir_name"
done

如果不想移动mvcp使用代替

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用awk按行数将行移动到文件中

按名称对文件进行数字排序,然后按BASH中的父目录排序

如何保存文件并将其移动到所需位置,然后再下载(python,selenium)?使用Chrome WebDriver

如何使用特定列中的值对行进行分组,然后使用Google Sheets API将其导出到相应的新电子表格

如何在Windows中使用“目录”命令基于文件的最后更新时间对文件进行排序

在Unix中使用“ ls”时,如何对第一个目录然后对文件等进行排序

如何使用for循环和使用awk的数组对文件的行进行重新排序

如何查找特定文件并将其移动到特定目录?

对于每个子文件夹,请按名称对文件进行排序,然后将其重命名为连续的填充数字(不考虑扩展名)

使用Shell脚本对文件进行排序,然后删除旧文件

如何使用“ stat”检测新文件,然后将其移动到其他目录?

使用python查找PDF和DOC文件并将其移动到其他目录

与我目前使用`cut`和`rev`的方法相比,从文件名中提取年份以将其移动到基于年份的目录的最快方法是什么?

批处理文件可在子文件夹中找到.ts文件,然后将其移动到目录中?

使用CSV文件将文件移动到其他目录

使用Powershell按大小对文件进行分组

使用awk对文件进行双倍间距

查找文件,然后使用-exec将其移动到另一个文件夹

使用Lambda按名称中的通用文本对文件进行分组

使用特定的名称模式将数百万个文件移动到另一个目录

使用awk对文件中的特定列进行分组

如何使用bash将所有文件从多个目录移动到其父目录

压缩文件并将其移动到相应目录

如何使用tar命令对文件进行分组而不进行压缩?

使用 find 查找目录并将其移动到不同的路径

根据扩展名对文件进行排序并将它们移动到它们的目录中

根据名称的第一个字母对文件和目录进行分组,并将它们移动到该字母的目录中

使用文件夹名称键将文件夹移动到相应的子文件夹

使用 ffmpeg 压缩视频然后移动到相应的文件夹